if __name__ == 'main':
的作用
1
2
3
4
5
6
# test.py
print ('you are importing ', __name__)
if __name__ == 'main':
print ('you are executing ', __name__)
# hello.py
import hello
print ('you are executing hello.py ', __name__)
一个python文件有两种使用方式:
- 直接作为脚本执行,比如:
python test.py
- 被其他python文件import使用。比如在hello.py里
import test
,然后使用test中的接口。
如果想控制一个python脚本里的某些代码只在直接执行的时候运行,在被import的其他python脚本时不被直接执行,就可以将那部分代码放在if __name__ == 'main':
下。
原理
__name__
是python的内置变量。
python test.py
方式直接执行,则__name__
就等于"__main__"
.所以直接执行上面的test.py脚本,会打印
1 2
you are importing __main__ you are executing __main__
import test
方式导入,则__name__
就等于模块名"test"
.所以直接执行上面的hello.py脚本,会打印
1 2
you are importing __main__ you are executing hello.py __main__