if __name__ == '__main__'的风格规范是什么?

4 投票
3 回答
504 浏览
提问于 2025-04-18 07:53

我明白这样做的目的,不过我想知道用 if __name__ == '__main__' 的最“Python风格”的方法是什么?

我在考虑是把所有代码放在一个 main() 函数里,然后像这样调用它:

if __name__ == '__main__':
    main()

还是不这么麻烦,直接把所有代码写在最外层:

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

3 个回答

-2

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

我建议先写一个主函数,然后再调用它。这样可以把你的代码放在一个“组”里。JavaScript也是这么做的,不过他们叫它模块。他们先定义一个函数,然后马上调用它。

JavaScript示例

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

我不知道哪种写法更常见,但把所有代码放在一个 main 函数里并调用它的一个原因是,查找局部变量的速度比查找全局变量快(想了解更多可以看看这个问题)。

5

如果你把所有代码都写在 __name__ 保护下,这样的话你就无法重复使用这些代码。相反,如果你把代码放在一个 main() 函数里,你就可以在其他地方导入这个函数并调用它。

比如,当你用 setuptools 打包你的项目时,你会在 setup.py 中注册控制台脚本。这样,你可以在不先安装的情况下测试你的脚本,并且可以作为已安装的脚本运行(这会在调用你的 main() 函数之前,把依赖项添加到 sys.path 中)。

撰写回答