if __name__ ==“ __main__”:在Python中做什么?

当Python解释器读取源文件时,它将执行其中找到的所有代码。

在执行代码之前,它将定义一些特殊变量。例如,如果python解释器将该模块(源文件)作为主程序运行,则它将特殊的__name__变量设置为值“ __main__”。如果从另一个模块导入该文件,则将__name__设置为模块的名称。

这样做的一个原因是,有时您编写了一个模块(.py文件),可以在其中直接执行该模块。或者,也可以将其导入并在另一个模块中使用。通过进行主要检查,您可以使代码仅在要将模块作为程序运行时执行,而在有人只想导入模块并自己调用函数时不执行。

例如,如果您有2个文件one.py和two.py,其代码如下:

一个.py:

def func():
    print("func() in one.py")
print("Root of one.py")
if __name__ == "__main__":
    print("one.py is being run directly")
else:
    print("one.py is being imported")

Two.py:

import one
print("Root of two.py")
one.func()
if __name__ == "__main__":
    print("two.py is being run directly")
else:
    print("two.py is being imported")

现在,如果您运行,

$ python one.py

您将获得输出:

Root of one.py
one.py is being run directly

但是如果你运行

$ python two.py

您将获得输出:

Root of in one.py
one.py is being imported
Root of in two.py
func() in one.py
two.py is being run directly