先举一个简单的例子:
这里有两个.py的文件,a.py和b.py
a.py内容为:
b.py的内容为:
当执行b.py时结果为:
也就是将a.py文件里的内容执行一边,b.py里的内容执行一边,这显然不是我们想要的,我们只是想借用a.py模块里的PI常量。
如果两个文件里的代码改成如下:
执行结果:
这就没问题了。原因在于:
python文件既可以用来直接执行,也可以作为模块被导入。
其中__name__是模块的内置属性,而这个内置属性的值取决于这个.py文件的使用方式,即是作为模块导入还是直接执行。
如果是直接执行,那么这个__name__的值就是’__main__‘,如果你作为一个模块导入,那么这个内置属性值就取决于这个文件名(不包含路径和文件扩展名)。
所以我们在看到一个这样的句子时
if name == ‘main‘:
main()
时,就是文件在执行时要执行这个main()函数