论 if __name__ == '__main__':
之前学习Python时,总是见到if __name__ == '__main__':,但我一直不知道是什么意思。之后做了一些demo,没有if __name__ == '__main__':也能运行,就没有深究。今天闲来无事(既然无事就要让他有事),就研究了一下。
注:因为我是学生党,所以用手机里的QPython OH代替Python运行环境。
- 新建aaa.py,输入如下代码
def myfunc(): print("b") print("a") myfunc()
运行后是这样的
a b #[QPython] Press enter to exit ...
- 下面我们新建bbb.py
from aaa import myfunc myfunc() print("c")
你以为
b c #[QPython] Press enter to exit ...
实际上运行后
a b c #[QPython] Press enter to exit ...
是不是很疑惑?明明我只调用了myfunc(),为什么连a也给我打印出来了?这才是if __name__ == '__main__'的真正意义。
- 之后我们把aaa.py的内容改成
def myfunc(): print("b") if __name__ == '__main__': print("a") myfunc()
运行之后的结果还是
a b #[QPython] Press enter to exit ...
再运行bbb.py
b c #[QPython] Press enter to exit ...
看,变成你想要的了吧?根据结果我们可以看到,if __name__ == '__main__'下面的语句没有被运行。
总结:__name__ 相当于模块的名字,'__main__'相当于本程序的名字。如果整个项目只有一个文件,那么if __name__ == '__main__'用不用都行。如果整个项目有两个及以上文件,那么就要把被引用文件中不希望在其他文件被使用的函数放在if __name__ == '__main__'下面。