一个python文件有两种使用方法:
- 作为脚本直接运行
- import到其它文件中被调用(模块重用)
if __name__ == '__main__':
就是用来控制这两种情况下代码执行的过程。在if __name__ == '__main__':
下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他文件中是不会被执行的。
每个python文件都包含内置的变量__name__,如果直接被执行,则__name__='__main__'
,如果被当作模块调用,则__name__=模块名。
看看下面的示例就清晰了:
创建test.py文件,内容如下
# vim test.py
print("I'm the first.")
print(__name__)
if __name__=="__main__":
print("I'm the second.")
直接运行文件,这里能看到打印结果__name__='__main__'
,所以执行了后面的print。
# python3 test.py
I'm the first.
__main__
I'm the second.
创建import_test.py,仅调用test模块
# vim import_test.py
import test
运行import_test.py文件,这里test.py文件被调用时__name__=模块名即test,所以if __name__=="__main__"
为假,后面的print没有执行。
# python3 import_test.py
I'm the first.
test
参考:
https://docs.python.org/3/library/main.html