Python代码中,我们经常会看到如下的代码段:
def main ():
pass
if __name__=='__main__':
main()
if __name__=='__main__'究竟是什么意思,下面结合代码实例,对其进行解读.首先看test.py程序:
test.py
print(__name__)
'''
def main ():
pass
if __name__=='__main__':
main()
'''
Test.py的执行结果如下所示:
打印出__name__,得到的结果是__main__.这说明,Python在执行代码的时候设置了一些特殊变量,显然name就是这样的特殊变量之一,当Python直接运行一个Python代码的时候,将name特殊变量置为main.
再编写一个test_1.py文件,在这个文件中只有一行import 代码,调用test.py
import test
在test_1.py中调用test.py,执行的结果为:
当Python通过调用的但是执行一个Python文件的时候,被调用的Python文件中的name被置为文件本来的名字,在我的程序中就是test.
因此if __name__=='__main__',用来判断这个Python文件是否被直接执行,如果是直接执行则运行if下的代码,如果是调用执行,则运行else之后的代码.通过下面的两个文件说明.
first_model.py
print("永远都会被执行的一行print代码")
def main() :
print("这个程序被直接执行")
pass
if __name__=='__main__':
main()
else:
print("这个程序被调用执行")
直接执行first_model.py的结果为:
second_model.py 在second_model.py中调用first_model
import first_model as fm
fm.main()
执行结果为: