这是什么,为什么应该包括一个 if 声明?
if __name__ == "__main__":
print("Hello, World!")
如果你试图关闭一个问题,有人应该使用这个字符,而不是,考虑关闭作为一个复制为什么Python在我进口时运行我的模块,而我如何停止它? 问题,有人只是没有呼叫任何功能,或者错误地等待一个名为主的功能将自动作为一个输入点,使用为什么没有主()功能运行。
这是什么,为什么应该包括一个 if 声明?
if __name__ == "__main__":
print("Hello, World!")
如果你试图关闭一个问题,有人应该使用这个字符,而不是,考虑关闭作为一个复制为什么Python在我进口时运行我的模块,而我如何停止它? 问题,有人只是没有呼叫任何功能,或者错误地等待一个名为主的功能将自动作为一个输入点,使用为什么没有主()功能运行。
当前回答
如果 __name__ ==“__main__”是当脚本从(说)命令线运行时运行的部分,使用像 python myscript.py 这样的命令。
其他回答
如果 __name__ ==“__main__”:该怎么办?
__name__ 是一个全球变量(在 Python 中,全球实际上意味着在模块层面)存在于所有名称空间。
作为唯一的特殊情况,但是,在任何Python过程你运行,如 mycode.py:
python mycode.py
否则匿名的全球名称空间将“__main__”的值归咎于其 __name__。
因此,包括最后的线条
if __name__ == '__main__':
main()
在您的 mycode.py 脚本的结尾,当它是由 Python 过程运行的主要输入点模块时,
将使您的脚本独特定义的主要功能运行。
使用此构造的另一个好处:您也可以将代码作为一个模块进口到另一个脚本,然后运行主功能,如果和当您的程序决定:
import mycode
# ... any amount of other code
mycode.main()
所有答案都解释了功能性,但我会给出一个例子它的使用,这可能有助于进一步清理这个概念。
假设你有两个 Python 文件, a.py 和 b.py. 现在, a.py 输入 b.py. 我们运行 a.py 文件,其中输入 b.py 代码首先执行。
在 b.py 代码中,有一些代码是专属于 b.py 文件,我们不希望任何其他文件(除了 b.py 文件),已进口了 b.py 文件,运行它。
如果它是主要文件(即,b.py)运行代码,在这种情况下它不是(a.py是主要文件运行),那么只有代码被执行。
当您执行模块(源文件)时,条件是否检查模块是否直接被召唤或从另一个源文件被召唤。
如果直接呼吁执行,则模块名称将设置为“主”,然后在如果区块内的代码将执行。
如果 Python 翻译器运行一个特定的模块,那么 __name__ 全球变量将有“__main__”的值:
def a():
print("a")
def b():
print("b")
if __name__ == "__main__":
print ("you can see me")
a()
else:
print ("You can't see me")
b()
当你运行这个脚本时,它打印:
you can see me
a
如果您输入此文件,请说 A 到 B 文件,然后执行 B 文件,然后如果 __name__ == “__main__” 在 A 文件中变成错误,那么它打印:
You can't see me
b
如果 __name__ ==“__main__”意味着如果您正常运行 Python 文件如 python foo.py,则将特殊变量 __name__ 归分为“__main__”。
但是,如果您正在导入文件如“导入 foo”,则将 __name__ 归分为“foo”并且不会运行函数。