python中if __name__ == '__main__':的作用

一个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

参考文档

posted @ 2017-09-19 17:32  KeithTt  阅读(386)  评论(0编辑  收藏  举报