这样做做什么,为什么应该包括:if
语句?
if __name__ == "__main__":
print("Hello, World!")
如果你试图结束一个问题 如果你想要结束一个问题 在那里有人应该应该 使用这个学说,而不是,是不是, 考虑关闭作为 重复的为什么Python在我进口时 运行我的模块? 我该如何阻止它?。而对于某些问题,如果有人只是没有调用任何函数,或者错误地期望指定函数main
自动用作切入点,使用当我启动 Python 脚本时, 主函数为何不运行? 脚本从哪里开始运行 ?.
只有你需要知道的事实
这个问题的其他答案太长了。 实际的机械非常简单,只有两个基本事实:
纯 Python 模块总是用变量创建__name__
设置为字符串"__main__"
.
导入模块的副作用是更改__name__
基本文件名的变量.py
扩展号。
如何使用这一信息
人们写作__name__ == '__main__'
要测试模块是否已经导入 。
通常情况下,有些代码在进口时不应运行:测试代码、一次性使用代码、指令前端或网络服务器前端。
其理念是,运行模块的人直接希望这些动作发生, 但是输入模块的人只想要直接访问功能、类别和变量。
正如你从其他答案中可以看到的,人们似乎能够无休止地谈论这个话题,但它确实很简单,很容易掌握。覆盖此(笑声) (掌声) (掌声) 值两分钟的读数。不要让其他答案把你淹没在解释过度的阴影中。(掌声) (掌声)
我认为最好打破答案的深度 和简单的话:
__name__
: Python 中的每个模块都有一个特殊属性__name__
。它是返回模块名称的内置变量。
__main__
:与其他编程语言一样,Python也有执行的切入点,即主切入点。'__main__'
是顶层代码执行范围的名称。基本上,您有两种方法使用 Python 模块:直接作为脚本运行,或导入。当一个模块作为脚本运行时,它的脚本__name__
设置为__main__
.
因此,《公约》和《京都议定书》的__name__
属性设置为__main__
当模块作为主程序运行时,该模块作为主程序运行。否则__name__
设置以包含模块的名称。
什么是什么东西if __name__ == "__main__":
是吗?
__name__
是一个全球变量(在 Python 中,在模块模块级别)存在于所有命名空间的所有命名空间中。它通常是模块的名称(作为str
类型))
然而,作为唯一的特殊情况,无论你运行的 Python 程序,就像我的代码。 py:
python mycode.py
以其他匿名的全域命名空间被指定为'__main__'
至其__name__
.
因此,包括最后一行
if __name__ == '__main__':
main()
- 在我的代码.py脚本的结尾,
- 当它是由 Python 进程运行的初级切入点模块时,
将会导致您的脚本有独特的定义main
要运行的函数。
使用此构造的另一个好处是:您也可以将代码作为模块导入到另一个脚本中,然后运行主函数,如果且当您的程序决定:
import mycode
# ... any amount of other code
mycode.main()
原因 原因 原因
if __name__ == "__main__":
main()
主要是为了避免导入锁定可能产生的问题引起的问题直接导入代码. 你想要main()
如果您的文件被直接引用( 即__name__ == "__main__"
如果您的代码是导入的, 则进口者必须从真正的主模块输入您的代码, 以避免进口锁出现问题 。
一个副作用是,您自动签署一个支持多个切入点的方法。您可以使用main()
作为切入点,但你没有 不得不时段setup.py
预计预计预计预计main()
,其他工具使用其他切入点。例如,将文件作为gunicorn
进程,您定义app()
函数代替main()
。 和setup.py
, gunicorn
输入密码时不要做任何事情(因为进口锁问题)。
当我们的模块中有某些语句时(M.py
)我们想要当它作为主(而非导入)运行时被执行, 我们可以将这些语句( 测试案例、 打印语句) 置于此下if
区块。
默认值( 当模块作为主模式运行时, 不导入)__name__
变量设置为"__main__"
,当它将进口__name__
变量将获得不同的值, 最有可能是模块的名称('M'
这有助于将模块的不同变量合并运行,并区分其具体的输入和输出语句,以及如果有任何测试案例的话。
简简,使用此“if __name__ == "main"
防止模块导入时运行(确定)代码的块。
缩略Python 主函数是一个程序的起始点。当程序运行时, Python 口译员会按顺序运行代码。主要函数只有在作为 Python 程序运行时才执行...
def main():
print("I am in the function")
print("I am out of the function")
当运行脚本显示时 :
I am out of the function
而不是代码"我是在函数"。
这是因为我们没有宣布调用功能“if_name”主要".
使用时使用:
def main():
print("I am in the function")
if __name__ == "__main__":
main()
print("I am out of the function")
输出等于
I am in the function
I am out of the function
在皮顿if__name__== "__main__"
允许您作为可重复使用的模块或独立程序运行 Python 文件。
当 Python 口译员读取源文件时, 它会执行其中的所有代码。 当 Python 运行“ 源文件” 作为主程序时, 它会设置特殊变量__name__
要有一个值"__main__"
.
当您执行主函数时,它会读取if
用来检查__name__
等于__main__
.