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只是一个引导线和大量的你看到不符合它的代码。

问题不在于性能。

问题在于清晰度。

您的“主”程序只是今天的一个主程序。明天,它可能是包含在某些更高级别的主程序中的库。稍后,它将只是一个更大的包中的一个模块。

由于您的“主”程序的生命可能会改变,因此您有两种反应。

  1. 隔离里面的“主要”东西 if __name__ == "__main__". 。这并不是对 PEP-8 的荒唐违反。这是一种合理的包装方式。

  2. 尝试限制“主”程序脚本中的功能数量。尝试将它们降低到 imports 和 if __name__ == "__main__" 东西。如果您的主脚本很小,那么您的导入问题就会消失。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top