1. Python中 if __name__ == ‘__main__‘: 的作用
python文件一般有两种使用方法,第一种是作为脚本文件直接执行,第二种是作为模块被其他python脚本调用执行。在第一种情况时,if __name__ == ‘__main__‘:前后的命令都会被执行。而在第二种情况时,if __name__ == ‘__main__‘ 后面的代码不会被执行。例如,我们编写 first.py 和second.py 两个文件,first.py 定义了两个函数,并且在if __name__ == ‘__main__‘ 前后分别调用了fir() 和 sec(),而second.py则直接导入了first.py:
first.py 如下
def fir():
print("第一个")
def sec():
print("第二个")
fir()
if __name__== "__main__":
sec()
second.py 如下
import first
分别执行 first.py 和 second.py 文件,得到以下结果:
由此我们可以看到直接执行first.py文件, if __name__ == ‘__main__‘:前后的代码都被执行,导入first.py的second.py文件则不执行if __name__ == ‘__main__‘:后面的代码。
原因
每个python模块都包含内置的变量__name__
,当运行模块直接被执行的时候,__name__就等于__main__,而作为模块导入时,__name__就变成了可执行文件的名称。例如,我们在first.py文件中将__name__打印出来:
def fir():
print("第一个")
def sec():
print("第二个")
print(__name__)
fir()
if __name__== "__main__":
sec()
再分别执行 first.py 和 second.py,可以看到在first.py中,__name__是__main__,因此其后面的语句执行,而在second.py中__name__是first(可执行文件名称),不是__main__,因此其后面的语句不执行。