这样做做什么,为什么应该包括:if
语句?
if __name__ == "__main__":
print("Hello, World!")
如果你试图结束一个问题 如果你想要结束一个问题 在那里有人应该应该 使用这个学说,而不是,是不是, 考虑关闭作为 重复的为什么Python在我进口时 运行我的模块? 我该如何阻止它?。而对于某些问题,如果有人只是没有调用任何函数,或者错误地期望指定函数main
自动用作切入点,使用当我启动 Python 脚本时, 主函数为何不运行? 脚本从哪里开始运行 ?.
我认为最好打破答案的深度 和简单的话:
__name__
: Python 中的每个模块都有一个特殊属性__name__
。它是返回模块名称的内置变量。
__main__
:与其他编程语言一样,Python也有执行的切入点,即主切入点。'__main__'
是顶层代码执行范围的名称。基本上,您有两种方法使用 Python 模块:直接作为脚本运行,或导入。当一个模块作为脚本运行时,它的脚本__name__
设置为__main__
.
因此,《公约》和《京都议定书》的__name__
属性设置为__main__
当模块作为主程序运行时,该模块作为主程序运行。否则__name__
设置以包含模块的名称。
当我们的模块中有某些语句时(M.py
)我们想要当它作为主(而非导入)运行时被执行, 我们可以将这些语句( 测试案例、 打印语句) 置于此下if
区块。
默认值( 当模块作为主模式运行时, 不导入)__name__
变量设置为"__main__"
,当它将进口__name__
变量将获得不同的值, 最有可能是模块的名称('M'
这有助于将模块的不同变量合并运行,并区分其具体的输入和输出语句,以及如果有任何测试案例的话。
简简,使用此“if __name__ == "main"
防止模块导入时运行(确定)代码的块。
我们看看__name__ == '__main__':
经常
它检查一个模块是否正在导入 。
换言之,在if
只有在代码直接运行时才执行此块。这里directly
中指not imported
.
让我们看看它用一个简单的代码 来打印模块的名称做什么:
# test.py
def test():
print('test module name=%s' %(__name__))
if __name__ == '__main__':
print('call test()')
test()
如果我们直接通过python test.py
,模块名称是__main__
:
call test()
test module name=__main__
我认为最好打破答案的深度 和简单的话:
__name__
: Python 中的每个模块都有一个特殊属性__name__
。它是返回模块名称的内置变量。
__main__
:与其他编程语言一样,Python也有执行的切入点,即主切入点。'__main__'
是顶层代码执行范围的名称。基本上,您有两种方法使用 Python 模块:直接作为脚本运行,或导入。当一个模块作为脚本运行时,它的脚本__name__
设置为__main__
.
因此,《公约》和《京都议定书》的__name__
属性设置为__main__
当模块作为主程序运行时,该模块作为主程序运行。否则__name__
设置以包含模块的名称。
考虑:
if __name__ == "__main__":
main()
它检查是否__name__
Python 脚本属性是"__main__"
。换句话说,如果程序本身被执行,则属性将是__main__
,因此程序将被执行(在这种情况下,main()
职能)
然而,如果您的 Python 脚本被模块使用,if
将执行语句,所以if __name__ == "__main__"
仅用于检查程序是否用作模块,因此决定是否运行代码。