if __name__ == '__main__'
很多 Python 相关的教程
都是在这里一笔带过
有些比较好奇的朋友
想知道为啥要这样写
刚好有人问起
今天就来告诉你为啥
当你在写 .py 的时候
一般是以两种方式存在的
1、作为脚本直接运行
2、作为模块给别人导入
你的代码在被执行的时候
Python 解释器会先去
读取你的 Python 代码
然后定义一些全局的内置变量
而我们常常写的这个 __name__
就是其中的变量之一
如果判断出
__name__ 的值是 __main__
就说明这里是程序入口
而非被别的 py 文件 import
这里的运行结果是
程序从上到下按顺序运行
先执行的是打印 name
这和 java 有点不同
没有所谓的主函数
public static void main(String[] args){…}
那么这个 __name__ 是来干嘛的
把 if __name__ == '__main__' 去掉
不也能照样运行
我们再定义一个方法
专门用来打印变量 __name__ 的值
直接运行
可以看到 __name__ 的值就是 '__main__'
接着换种方式:
我们把这个文件命名为 A.py
作为模块给 B.py 导入
直接 import A
然后运行
运行结果
可以看到
A模块的调用都被执行了
但有一点很不同的是
这里的 name 值是 A
而不再是 __main__
到这里,我们就发现了
当 .py 直接运行的时候
__name__的值是__main__
而当 .py 被当作模块导入的时候
__name__的值是模块的名称
我们接着修改一下 A.py
本来是这样的
现在改成这样
再运行 B.py
这次就不会运行到 A 的调用了
所以你的 .py 可以
作为自己的脚本运行
在 __main__ 中做一些测试
或者本身程序的运行
当然你也可以
使用你的 .py 作为模块给别人使用
给别人提供一些便利
为了不让别人一导入你的模块
就直接运行整个脚本
那么使用
其中的代码就不会在被 import 时被执行。
本文分享自 Crossin的编程教室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!