含义
这句代码是用来检测当前程序是否正在作为主程序被运行。
- 如果是,则执行下面的主功能(main functionality)
- 如果不是,则无需执行下面的主功能
为什么这么做?
因为Python中每个程序都可以被导入到其他程序中。即使是一个打算被用作脚本的文件,也应该是可被导入的。
然而所有的顶级代码在模块导入时都会被执行。
这意味着同一个程序可能出现两种运行方式(状态):
但仅仅进行导入操作就导致这个脚本的主功能被执行,显然是不必要的。
所以编写程序时,主功能应该放在一个main()函数中,防止该脚本被导入时主功能被执行。
原理
每个Python程序都有一个特殊的变量__name__ :
- 当程序做为主程序执行时,
__name__ 值会变成 “__main__” - 而在平时或者作为被导入的程序执行时,
__name__ 值都是该程序的文件名
我们可以通过__name__ 是否为"__main__"来检测当前程序正在作为 主程序 运行,还是作为 被导入的程序 运行。
例子:
假设下面是一个您写的程序,文件名是"myFunctions.py"
def triple(x):
return x * 3
if __name__ == '__main__':
print(triple(6))
当您将程序作为主程序运行时,__name__ 的值为“__main__”,因此会执行到最后一行(打印 18)。 当您将该程序导入到另一个程序时__name__ 的值是“myFunctions”,所以不执行最后一行(不打印18)。
|