Python:主程序开头的导入与PEP 8
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:
但最重要的是:要知道什么时候可以不遵循规则——有时候风格指南并不适用。当你不确定的时候,尽量用你自己的判断。看看其他的例子,决定什么看起来最好。不要犹豫去问!