if __name__ == '__main__'的风格指南是什么?

4

我明白这个的作用,但我想知道在使用if __name__ == '__main__'时最符合Python规范的方式是什么?

我在使用上有些犹豫,不知道是把所有代码放到一个main()函数中并像下面这样调用:

if __name__ == '__main__':
    main()

或者不必烦恼,直接将所有一级代码都写在那里:
if __name__ == '__main__':
    # all top-level code...

4
不同意此处的关闭投票。如果回答者能够提供证据说明为什么一种方法比另一种更好,就像Ismail Badawi链接到的答案中那样,那么这不是基于观点的。 - Jamie Bull
3个回答

5
如果您将所有代码编写在__name__保护下,就无法重复使用该代码。另一方面,如果您将代码放入main()函数中,您可以随时在其他地方导入该函数并调用它。
例如,在使用setuptools打包项目时注册控制台脚本时,您可以使用此功能。这样,您可以在不安装脚本的情况下测试脚本,并且可以作为已安装脚本运行(在调用您的main()函数之前添加依赖项到sys.path)。

4

我不知道哪种方式更符合惯用语,但将所有内容放在一个main函数中并进行调用的原因之一是,局部变量查找比全局变量查找更快(请参见此问题以获取解释)。


区别很小,特别是对于只运行一次的控制台脚本来说。对于99%的使用情况来说,这不应该是一个大问题。 - Martijn Pieters

-2

免责声明:我只从CodeAcademy学过一点Python。

我会先编写主函数,然后调用它。这将把你的代码组合成一个“组”。JavaScript几乎做了同样的事情,但他们称之为模块。他们创建函数,然后立即调用它。

JavaScript示例

(function() {
    // Stuff here
})();

这与代码如何分组无关。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接