网站首页 > 博客文章 正文
当 Python 解释器读取运行 Python 文件时,它首先会设置一些特殊的变量。然后执行文件中的代码。其中一个变量称为:__name__。它表示模块或脚本的名称。当脚本作为主程序执行时,其值设置为 __main__。如果将脚本作为模块导入,则变量的值将设置为模块的实际名称。
假设我们有以下两个文件:
# my1.py
print("我是my1.py")
# my2.py
if __name__ == "__main__":
print("我是my2.py")
如果我们运行这两个文件,分别输出“我是my1.py”、“我是my2.py”。my2.py 作为脚本文件运行,if 语句条件成立,脚本运行有相应输出。
我们再编写两个文件:
# my3.py
import my1
print("我是my3.py")
# my4.py
import my2
print("我是my4.py")
分别将 my1.py、my2.py 作为模块导入。运行结果分别如下:
我是my1.py
我是my3.py
我是my4.py
在 my3.py 中,my1.py 作为模块导入,my3.py 运行时,my1.py 中的代码也被执行。输出两行文字。
在 my4.py 中,my2.py 作为模块导入,my4.py 运行时,my2.py 中的代码使用 if __name__ == "__main__" 进行判断,my2.py 不是作为主程序运行,而是作为模块使用,相应的输出没有被执行。输出一行文字。
简而言之,if __name__ == "__main__" 允许文件作为脚本运行时执行相应代码,但在作为模块导入时不执行相应代码。
我们了解了 if __name__ == "__main__" 在 Python 中的作用。如果要在脚本运行期间收集用户输入,最好使用它,并避免在导入模块时产生副作用。
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!
- 上一篇: Spring 中三种 BeanName 生成器!
- 下一篇: mysql学习9:创建数据库
猜你喜欢
- 2025-08-06 nginx 反向代理
- 2025-08-06 跨表插入连续的日期,sheetsname函数#excel技巧
- 2025-08-06 初中生也能学的编程,不走弯路,先用后学
- 2025-08-06 find命令的“七种武器”:远不止-name和-type
- 2025-08-06 恶意代码常见的编程方式
- 2025-08-06 kali2021ping 外网不通
- 2025-08-06 因为一个函数strtok踩坑,我被老工程师无情嘲笑了
- 2025-08-06 hadoop集群搭建详细方法
- 2025-08-06 Redis安装和开机自启,看这一篇就够了
- 2025-08-06 Linux Namespace原理
你 发表评论:
欢迎- 08-06nginx 反向代理
- 08-06跨表插入连续的日期,sheetsname函数#excel技巧
- 08-06初中生也能学的编程,不走弯路,先用后学
- 08-06find命令的“七种武器”:远不止-name和-type
- 08-06恶意代码常见的编程方式
- 08-06kali2021ping 外网不通
- 08-06因为一个函数strtok踩坑,我被老工程师无情嘲笑了
- 08-06hadoop集群搭建详细方法
- 18℃nginx 反向代理
- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- vueproxytable (64)
- npminstallsave (63)
- #NAME? (61)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)