Posts 理解__name__
Post
Cancel

理解__name__

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__
    
This post is licensed under CC BY 4.0 by the author.