一个python文件通常有两种使用方法:
(1)作为脚本直接执行,
(2)import 到其他的 python 脚本中被调用(模块重用)执行。
每个python模块(python文件,也就是此处的 main.py 和 demo2.py)都包含内置的变量 __name__,当该模块被直接执行的时候,__name__ 等于文件名(包含后缀 .py );如果该模块 import 到其他模块中,则该模块的 __name__ 等于模块名称(不包含后缀.py)。而 “__main__” 始终指当前执行模块的名称(包含后缀.py)。进而当模块被直接执行时,__name__ == 'main' 结果为真。
因此 if __name__ == 'main': 的作用就是控制开头两种情况执行代码的过程。在 if __name__ == 'main': 下的代码只有在第一种情况下才会被执行,而 import 到其他脚本中是不会被执行的。
举例说明如下:
一. 直接执行
在文件夹新建名称为demo2.py 的脚本,在demo2.py中写入以下代码:
# 文件:demo2.py
print('Hello World!')
if __name__ == '__main__':
print('World Record')
输出,可以成功输出两行字符串:
Hello World!
World Record
二. import导入运行:
在main.py中导入之前的demo2:
import demo2
输出:
Hello World!
只输出了第一行字符串。即,if __name__=="__main__": 之前的语句被执行,之后的没有被执行。