为什么某些 python 脚本以这种方式声明 main()?
Why do some python scripts declare main() in this manner?
在某些 python 脚本中,我看到了这种格式;
def main():
#run code
if __name__ == "__main__":
main()
在其他 python 脚本中,行 if __name__ == "__main__":
不存在,但代码 运行s 正常。即使没有它,代码也可以正常 运行 为什么要有这个额外的冗余行?使用if __name__ == "__main__":
有什么好处?
默认情况下,只有当您 运行 脚本作为主脚本时(例如 python my_script.py
),此行允许您实现某些功能 运行。
当脚本可以用作主程序或导入另一个 python 模块或 python shell 时,这很有用。在后一种情况下,您几乎肯定不希望 main(或其他模块功能)在导入时 运行,这是解释器加载脚本时默认发生的情况。
如果您永远不会在其他代码或 python shell 中导入此脚本,那么您不需要这一行。但是,最好将代码设计为模块化和导入友好的;即使是看起来像是丢弃的脚本(例如绘制一些数字、解析一些日志等)在更大的上下文中也可能有用。特别是在交互式 shell 会话中,例如使用 ipython
。而且代价小:将语句封装在函数中,加上ifmain
。
这在您制作模块时很有用,或者通常如果您打算在 运行 其他脚本时导入您的 scipt。 __name__ == "__main__"
仅当该脚本是执行的 main 脚本时才为真,因此它避免了 运行 在导入时 运行 的后续代码声明。
在某些 python 脚本中,我看到了这种格式;
def main():
#run code
if __name__ == "__main__":
main()
在其他 python 脚本中,行 if __name__ == "__main__":
不存在,但代码 运行s 正常。即使没有它,代码也可以正常 运行 为什么要有这个额外的冗余行?使用if __name__ == "__main__":
有什么好处?
默认情况下,只有当您 运行 脚本作为主脚本时(例如 python my_script.py
),此行允许您实现某些功能 运行。
当脚本可以用作主程序或导入另一个 python 模块或 python shell 时,这很有用。在后一种情况下,您几乎肯定不希望 main(或其他模块功能)在导入时 运行,这是解释器加载脚本时默认发生的情况。
如果您永远不会在其他代码或 python shell 中导入此脚本,那么您不需要这一行。但是,最好将代码设计为模块化和导入友好的;即使是看起来像是丢弃的脚本(例如绘制一些数字、解析一些日志等)在更大的上下文中也可能有用。特别是在交互式 shell 会话中,例如使用 ipython
。而且代价小:将语句封装在函数中,加上ifmain
。
这在您制作模块时很有用,或者通常如果您打算在 运行 其他脚本时导入您的 scipt。 __name__ == "__main__"
仅当该脚本是执行的 main 脚本时才为真,因此它避免了 运行 在导入时 运行 的后续代码声明。