Python:在主程序和 PEP 8 开始处导入
题
这 PEP 8 建议在程序开始时导入模块。
现在,我觉得在开始时导入其中一些 主要的 程序(即,之后 if __name__ == '__main__'
) 说得通。例如,如果主程序从命令行读取参数,我倾向于这样做 import sys
在开始的时候 主要的 程序:这边走, sys
当代码用作模块时不必导入,因为在这种情况下不需要命令行参数访问。
这种对 PEP 8 的侵犯有多严重?我应该避免这样做吗?或者修改 PEP 8 是否合理?
解决方案
我真的不能告诉你这是多么糟糕的事情。
然而,我已经大大改善的性能(响应时间,负荷),用于通过仅在第一使用导入某些文库的网络应用程序。
顺便说一句,下面也从PEP 8:
但最重要的是:知道什么时候是 不一致 - 有时风格 指导就是不适用。当 无疑,用你的最佳判断。看 在其他的例子,并决定什么 看起来最好。不要犹豫, 问!
其他提示
在总的来说,我不认为有一个在进口下旬多大的危害为可能不需要的模块。
不过sys
我肯定会年初进口,在顶部。这是这样一个共同的模块,它的很可能你可能在你的脚本的其他地方使用sys和没有注意到,它并不总是进口。 sys
也总是被Python本身加载的模块之一,所以你是不是通过避免进口保存任何模块的启动时间(不是说有一个为SYS多启动反正)。
我会建议你做你觉得什么是最适当的时候没有什么PEP对你的关注。
输入SYS并没有真正花那么长,我会担心。某些模块也需要更长的时间不过。 我不认为SYS真的很会堵塞命名空间。我不会使用一个变量或类称为SYS无论。
如果你觉得它在做弊大于利有它的顶部,通过各种手段做到这一点,只要你喜欢。 PEP 8只是一个引导线和大量的你看到不符合它的代码。
问题不在于性能。
问题在于清晰度。
您的“主”程序只是今天的一个主程序。明天,它可能是包含在某些更高级别的主程序中的库。稍后,它将只是一个更大的包中的一个模块。
由于您的“主”程序的生命可能会改变,因此您有两种反应。
隔离里面的“主要”东西
if __name__ == "__main__"
. 。这并不是对 PEP-8 的荒唐违反。这是一种合理的包装方式。尝试限制“主”程序脚本中的功能数量。尝试将它们降低到
import
s 和if __name__ == "__main__"
东西。如果您的主脚本很小,那么您的导入问题就会消失。