Python:主程序开头的导入与PEP 8

5 投票
5 回答
2239 浏览
提问于 2025-04-15 15:03

PEP 8 建议在程序开始时导入模块。

不过,我觉得在程序的开始部分(也就是在if __name__ == '__main__'之后)导入某些模块是有道理的。例如,如果主程序需要从命令行读取参数,我通常会在程序的开头写import sys。这样做的好处是,当代码作为模块使用时,就不需要导入sys,因为在这种情况下不需要访问命令行参数。

这样做违反PEP 8的程度有多严重呢?我应该避免这样做吗?还是说修改PEP 8是合理的?

5 个回答

2

我建议你在PEP(Python增强提案)中没有相关内容时,做你觉得最合适的事情。

6

一般来说,我觉得对于那些可能不需要的模块,晚一点导入也没什么大不了的。

不过像sys这样的模块,我建议还是早点导入,放在最上面。因为sys是一个非常常用的模块,你可能在脚本的其他地方也会用到它,而不注意它并不是总被导入。sys也是Python自己总是会加载的模块之一,所以你避免导入并不会节省什么模块启动时间(其实sys的启动时间也不算长)。

9

我真的没法告诉你这样做有多糟糕。

不过,我通过在第一次使用时才导入某些库,显著提高了一个网页应用的性能(响应时间和加载速度)。

顺便提一下,下面这段话也是来自PEP 8:

但最重要的是:要知道什么时候可以不遵循规则——有时候风格指南并不适用。当你不确定的时候,尽量用你自己的判断。看看其他的例子,决定什么看起来最好。不要犹豫去问!

撰写回答