Python:导入导入文件&Quot;
问题描述
我导入了许多不同的脚本,所以在我的文件顶部,它被导入语句弄得乱七八糟,即:
from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...
...
有没有办法将所有这些文件移动到其他地方,然后我所要做的就是导入该文件,这样它就只是一个干净的导入?
解决方案
我强烈反对您想要做的事情。您正在执行global include file mistake again。尽管只有一个模块在导入所有模块(而不是所有模块都在导入全局模块),但剩下的一点是,如果有充分的理由将所有这些模块收集到一个通用名称下,那就没问题了。如果没有原因,那么它们应该作为单独的包含项保存。原因是文档。如果我打开您的文件,只看到一个导入,我无法获得有关导入的内容和来源的任何信息。另一方面,如果我有进口清单,我一目了然,什么是需要的,什么不是。
此外,我假设您正在犯另一个重要的错误。当你说
from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...
我假设您正在导入一个类,例如,如下所示
from somewhere.fileA import MyClass
这是错误的。此替代解决方案要好得多
from somewhere import fileA
<later>
a=fileA.MyClass()
为什么?原因有两个:第一,命名空间。如果有两个模块具有名为MyClass的类,则会发生碰撞。第二,文件。假设您使用第一个选项,并且我在您的代码中发现以下行
a=MyClass()
现在我不知道这个MyClass是从哪里来的,我必须遍历您的所有文件才能找到它。使用模块名称对其进行限定使我能够立即了解它的来源,并通过/搜索立即找到来自文件模块的内容在程序中使用的位置。
最后注意:当您说"FILEA"时,您正在做一个错误的操作。有模块(或包),而不是文件。模块映射到文件,包映射到目录,但它们也可能映射到egg文件,您甚至可以创建一个根本没有文件的模块。这是概念的命名,这是一个横向问题。相关文章