Python中的 if __name__ == "__main__"
对于Python初学者来说,在看别人代码时经常会看到if __name__ == "__main__",这时心里就开始吐槽:“绝对又是装逼,我特么不写这句话,代码不照样跑得好好的!
我刚开始碰到这行代码时,心里也是这样想的!
吐槽归吐槽,存在必然有存在的道理。现在就来看看这句代码到底是个啥意思,因为这句话能够帮你对Python模块的理解上一个层次。
通过例子来理解
只要你创建了一个模块(一个.py文件),这个模块就有一个内置属性name生成,该模块的?name?的值取决于如何应用这个模块。说人话就是,如果你直接运行该模块,那么__name__ == "__main__";如果你 import 一个模块,那么模块name?的值通常为模块文件名。
如,创建一个test1.py:
def func():
print(‘hello, world!‘)
if __name__ == "__main__":
func()模块中,首先定义了函数func(),用来打印出hello, world!,然后判断__name__?是否等于?__main__,如果等于,有打印,反之则反,现在运行该模块,结果为:
hello, world!说明__name__?等于?__main__。
这时,输入代码:
再创建一个test2.py:
import test1
print(‘bye, world!‘)模块中,首先import test1,然后打印bye, world!做测试用,运行该模块,结果为:
bye, world!运行结果仅有bye, world!,说明__name__?不等于?__main__。
通过上面test1.py和test2.py两个模块,我们现在可以得出一个非常实用的结论:?如果模块是被直接运行的,则代码块被运行,如果模块被import,则代码块不被运行。

原文:https://blog.51cto.com/u_15284226/2993637
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!