if __name__ =='__ main__'的样式指南是什么?

时间:2014-05-28 21:52:19

标签: python python-2.7 coding-style

我理解它的目的,但是我想知道使用if __name__ == '__main__'的最pythonic方法是什么?

我将所有代码放在main()函数中并将其称为:

if __name__ == '__main__':
    main()

或者不打扰那个并且只写那里的所有顶级代码:

if __name__ == '__main__':
    # all top-level code...

3 个答案:

答案 0 :(得分:5)

如果您在__name__防护下编写所有代码,则永远不能重复使用该代码。另一方面,如果您将代码放在main()函数中,您始终可以将该函数导入其他地方并调用它。

例如,在使用setuptools打包项目时,您可以将此用于在setup.py中注册的控制台脚本。这样您就可以在不先安装脚本的情况下测试脚本,将其作为已安装的脚本运行(在调用sys.path函数之前将其添加到main())。

答案 1 :(得分:4)

我不知道一个人是否比另一个更惯用,但将一切放入main函数并调用它的一个原因是局部变量查找比全局变量查找更快(参见{ {3}}获得解释)。

答案 2 :(得分:-2)

免责声明:我只知道CodeAcademy的一些Python。

我会去制作主要功能,然后调用它。它将您的代码组合成一个“组”。 JavaScript几乎完全相同,但他们称之为模块。他们制作这个功能,然后立即调用它。

JavaScript示例

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