PEP8导入准则与最小可变范围和可见性的原则相矛盾?

时间:2019-03-20 11:42:19

标签: python import conventions pep8

PEP 08状态:

  

导入总是放在文件的顶部,紧随任何模块之后   注释和文档字符串,以及模块全局变量和常量之前。

但是,最小化变量的范围(声明和使用之间的界线)以及最小化变量的可见性是已知的最佳实践。例如,在Code Complete 2. ed. by Steve McConnell,第246页中对此进行了说明。

在我的大部分代码中,我可以识别两种类型的导入。首先是导入的密钥库(例如import numpy as np),我将在整个文件中使用这些密钥库。那些确实是最重要的! 但是也有一些特定对象的导入,通常是从我自己的代码中导入的,通常只在一个地方使用。

对于第二种类型,我看到将其导入模块顶部的弊端-首先,在我使用它的地方,我看不到对象的来源,必须对其进行查找。 IDE也会提示我在所有其他位置使用它,我可能不希望仅通过在使用它的例程中导入它来实现(显然,如果我希望对该例程进行性能优化,则不会这样做,但是在其他情况下,可读性更重要)。

是时候更改此约定了吗?还是我错过了将这些一次性需要的进口也放在顶部的一些好理由?

1 个答案:

答案 0 :(得分:-1)

在文件顶部具有这些一次性需要的导入比将它们包含在函数,类等中更具有Pythonic性。使代码更具有Pythonic性比使变量跨度和可见性最小化更为重要。