Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么有些python脚本会以这种方式声明main()?_Python_Main - Fatal编程技术网

为什么有些python脚本会以这种方式声明main()?

为什么有些python脚本会以这种方式声明main()?,python,main,Python,Main,在一些python脚本中,我看到了这种格式 def main(): #run code if __name__ == "__main__": main() 在其他python脚本中,如果uuu name_uuu==“uuu main_uuu”:行不存在,但代码正常运行。如果代码可以正常运行,即使没有它,为什么还要有额外的冗余行?如果使用的好处是什么?这一行允许您仅在将脚本作为主脚本运行时(例如python my_script.py)默认情况下运行某些功能 当脚本可以用作主

在一些python脚本中,我看到了这种格式

def main():
    #run code

if __name__ == "__main__":
    main()  

在其他python脚本中,如果uuu name_uuu==“uuu main_uuu”:行不存在,但代码正常运行。如果代码可以正常运行,即使没有它,为什么还要有额外的冗余行?如果使用
的好处是什么?
这一行允许您仅在将脚本作为主脚本运行时(例如
python my_script.py
)默认情况下运行某些功能

当脚本可以用作主程序或导入到另一个python模块或python shell中时,这非常有用。在后一种情况下,您几乎肯定不希望在导入时运行main(或其他模块功能),这是默认情况下解释器加载脚本时发生的情况


如果您永远不会在其他代码或python shell中导入此脚本,那么您就不需要这一行。但是,最好将代码设计成模块化的、易于导入的;在更大的上下文中,即使看起来像是一次性脚本(例如,绘制一些数字、解析一些日志等)也可能有用。特别是在交互式shell会话中,例如使用
ipython
。而且成本很小:将语句封装在函数中,并添加
ifmain

这一行允许您仅在将脚本作为主脚本运行时(例如,
python my_script.py
)默认运行某些功能

当脚本可以用作主程序或导入到另一个python模块或python shell中时,这非常有用。在后一种情况下,您几乎肯定不希望在导入时运行main(或其他模块功能),这是默认情况下解释器加载脚本时发生的情况


如果您永远不会在其他代码或python shell中导入此脚本,那么您就不需要这一行。但是,最好将代码设计成模块化的、易于导入的;在更大的上下文中,即使看起来像是一次性脚本(例如,绘制一些数字、解析一些日志等)也可能有用。特别是在交互式shell会话中,例如使用
ipython
。而且成本很小:将语句封装在函数中,并添加
ifmain

这在制作模块时非常有用,或者通常在运行其他脚本时要导入scipt时非常有用<代码>\uuuu name\uuuu==“\uuuuu main\uuuuuu”仅当该脚本是执行的主脚本时才为真,因此它可以避免在导入语句中运行后续代码时运行后续代码。

这在制作模块时非常有用,或者通常在运行其他脚本时打算导入scipt时非常有用<代码>\uuuu name\uuuuu==“\uuuuu main\uuuuuu”仅当该脚本是执行的主脚本时才为真,因此它避免在导入语句中运行后续代码。

当我搜索该行时。在这里提问之前,请尝试自己研究一个问题。@juanpa.arrivillaga。我用谷歌搜索了一下,但我看不懂我读了什么。多亏了SO社区,刚才在这个问题上出现的直接答案更容易理解。这已经在SO上得到了回答。请不要发布重复的问题,如果你知道它们是重复的。当我在谷歌上搜索这行。在这里提问之前,请尝试自己研究一个问题。@juanpa.arrivillaga。我用谷歌搜索了一下,但我看不懂我读了什么。多亏了SO社区,刚才在这个问题上出现的直接答案更容易理解。这已经在SO上得到了回答。如果您知道问题重复,请不要发布重复的问题。听起来这一行仅对将导入的代码是必需的。正确吗?@user91579631是的,但根据我个人的经验,将代码设计成模块化和导入友好型总是很好的,即使看起来像一次性脚本(例如绘制一些数字、解析一些日志等)的东西在更大的上下文中也可能有用谢谢。似乎总是使用
是一种很好的做法,如果uuu name_uuu==“uuuu main_uuu”:
听起来只有将要导入的代码才需要这一行。正确吗?@user91579631是的,但根据我个人的经验,将代码设计成模块化和导入友好型总是很好的,即使看起来像一次性脚本(例如绘制一些数字、解析一些日志等)的东西在更大的上下文中也可能有用谢谢。似乎总是使用
if\uuuuu name\uuuuu==“\uuuuu main\uuuuu”: