if__name__=='__main__'是什么意思?
来源:2-1 实战自定义包(1)
kkkkke
2019-04-06 09:37:23
看了解释也没看懂
1回答
同学,你好,一个 Python 源码文件除了可以被直接运行外,还可以作为模块(也就是库)被导入。不管是导入还是直接运行,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。而实际上在导入的时候,有一部分代码我们是不希望被运行的。
例:我们有一个 test.py 文件,内容如下:
PI = 3.14 def main(): print("PI:", PI) main() # 程序运行结果 :PI: 3.14
现在,我们有一个 area.py 文件,用于计算圆的面积,该文件里边需要用到 test.py 文件中的 PI 变量,那么我们从 test.py 中把 PI 变量导入到 area.py 中:
from test import PI def calc_round_area(radius): return PI * (radius ** 2) def main(): print("round area: ", calc_round_area(2)) main() """ PI: 3.14 round area: 12.56 """
可以看到,test中的 main 函数也被运行了,实际上我们是不希望它被运行,提供 main 也只是为了对常量定义进行下测试。这时,if __name__ == '__main__' 就派上了用场。把 test.py 改一下:
PI = 3.14 def main(): print("PI:", PI) if __name__ == "__main__": main()
然后再运行 area.py,输出如下:round area: 12.56
if __name__ == '__main__' 就相当于是 Python 模拟的程序入口。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 __name__ 的值。
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
相似问题