为什么有些python脚本会以这种方式声明main()?
在一些python脚本中,我看到了这种格式为什么有些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)默认情况下运行某些功能 当脚本可以用作主
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”: