当前位置: 首页 > news >正文

python爬虫初体验(二)

Python中,每个模块都有一个内置的变量 name,用于表示当前模块的名称。当一个Python文件被执行时,Python解释器会首先将该文件作为一个模块导入,并执行其中的代码。此时,__name__的值为模块的名称。

作用

  1. 模块可被导入也可直接执行:使一个Python脚本既可以作为一个独立的程序运行,也可以被其他脚本作为模块导入。
  2. 减少全局污染:当脚本作为模块被导入时,可以避免执行不必要的代码,提高代码的整洁度和可维护性。
  3. 测试代码:可以编写一些测试代码,只在直接运行脚本时执行,而不影响作为模块导入时的行为。

使用场景

  1. 脚本和模块分离:使脚本既可以独立运行,也可以作为模块导入。
  2. 单元测试:在脚本中编写一些测试代码,只在直接运行时执行。
  3. 初始化资源:在脚本直接运行时初始化一些资源,例如数据库连接等。

示例

假设有一个Python脚本 example.py:

import sysdef greet(name):print("Hello, {}!".format(name))def main():# 检查命令行参数数量if len(sys.argv) < 2:print("Usage: python script.py <name>")sys.exit(1) # 退出程序,返回错误码1# 获取命令行参数中的名字name = sys.argv[1]# 调用greet函数greet(name)# 如果此脚本被直接运行,则执行main函数
if __name__ == '__main__':main()

如果你直接运行这个脚本:

python example.py world

控制台会输出:Hello, World!,其中sys.argv['example.py', 'world']

作为模块导入如果你在另一个脚本中导入 example.py:

import example
example.greet("Alice")

则输出Hello, Alice!。example.py 中的 if __name__ == '__main__': 块中的代码不会被执行,因为 example.py 是作为模块被导入的,其 __name__ 的值为 'example',而不是 '__main__'

注意事项

  • 命令行参数:确保在运行脚本时提供了正确的命令行参数。
  • 错误处理:可以添加异常处理逻辑来捕获并处理可能出现的错误。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 611. 有效三角形的个数
  • pip install、yum install和conda install三者技术区分
  • Django一分钟:DRF快速实现JWT认证与RBAC权限校验
  • 《程序猿之设计模式实战 · 适配器模式》
  • Vue3中shallowRef和ref区别
  • MySQL篇(事务 - 基础)
  • STL队列
  • 部标(JT/T1078)流媒体对接说明
  • POI操作EXCEL插入图片
  • 两数之和、三数之和、四数之和
  • PTA矩阵转置
  • Vue|插件
  • 2024双11买什么东西比较好?2024双十一好物推荐
  • 【Qt】背景介绍
  • 6-1 jmu-Java-04面向对象进阶-01-接口-匿名内部类ActionListener
  • hexo+github搭建个人博客
  • 分享一款快速APP功能测试工具
  • __proto__ 和 prototype的关系
  • 07.Android之多媒体问题
  • create-react-app项目添加less配置
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • git 常用命令
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • jquery ajax学习笔记
  • node学习系列之简单文件上传
  • 闭包--闭包作用之保存(一)
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 人脸识别最新开发经验demo
  • 使用 @font-face
  • 学习笔记:对象,原型和继承(1)
  • 原生JS动态加载JS、CSS文件及代码脚本
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​如何使用QGIS制作三维建筑
  • ​水经微图Web1.5.0版即将上线
  • # 数据结构
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (11)MSP430F5529 定时器B
  • (MATLAB)第五章-矩阵运算
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (十)T检验-第一部分
  • (十六)Flask之蓝图
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)Google的Objective-C编码规范
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .gitignore文件---让git自动忽略指定文件
  • .NET 5种线程安全集合
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET Micro Framework初体验(二)
  • .NET MVC第五章、模型绑定获取表单数据