我们经常看到python程序中执行部分开头有:
if __name__ == '__main__'
:
这是什么意思?对于初学者一定会有这个疑问(注意最后的冒号:不能没有)。
由于每个python模块(python文件)都包含内置的变量__name__,
当运行模块被执行的时候,__name__等于文件名(包含了后缀.py)。
如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。
而“__main__”等于当前执行文件的名称(包含了后缀.py)。
所以当模块被直接执行时,__name__ == '__main__' 结果为真;
而当模块被import到其他模块中时,__name__ == '__main__' 结果为假,就是不调用对应的方法。
简而言之就是:__name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。
当模块被直接运行时,代码将被运行,当模块是被导入时,代码不被运行。
if 语句还可以防止模块中的测试代码被执行,主要用于测试本脚本是否能正常运行。
举例:
程序 a.py 内容——
print('a.py')
if __name__ == '__main__':
print('running a.py, module is '+__name__)
程序 b.py内容——
import a
print('b.py')
if __name__ == '__main__':
print('running b.py, module is '+__name__)
1. run a.py, output
a.py
running a.py, module is __main__
2. run b.py
a.py #
运行了a.py的第一条语句,if后面的语句都没有运行
b.py
running b.py, module is
__main__ #
运行b.py的if语句