可能是重复内容:
什么是<if name==“main”:>?
我已经写了相当长时间的Python脚本,并在需要时学习更多关于Python的知识。当阅读其他人的代码时,我经常遇到if name == "__main__":
结构。
它有什么作用?
可能是重复内容:
什么是<if name==“main”:>?
我已经写了相当长时间的Python脚本,并在需要时学习更多关于Python的知识。当阅读其他人的代码时,我经常遇到if name == "__main__":
结构。
它有什么作用?
# hello.py
def hello(to=__name__):
return "hello, %s" % to
if __name__ == "__main__":
print hello("world")
您可以以两种方式使用该代码。首先,您可以编写一个导入它的程序。如果您导入库,__name__
将是库的名称,因此检查将失败,代码将不执行(这是期望的行为):
#program.py
from hello import hello # this won't cause anything to print
print hello("world")
如果您不想编写第二个文件,可以通过以下方式直接在命令行中运行代码:
$ python hello.py
hello, __main__
__main__
(尽管非常简略)。基本上,
在"主"脚本文件和被导入或以其他方式被引用的外部文件之间有一个区别。如果脚本是"主"脚本,则特殊变量__name__
将等于"__main__"
。
您可以使用这个方法来保护脚本中的类和变量不受"执行"代码的影响。这使得您可以导入一个脚本并使用其中的类和变量,而不必运行该脚本的主要代码(如果有的话)。
if __name__="__main__":
检查脚本是独立的还是模块。 - Adobeif __name__=="__main__":
- alberto