Python:导入导入文件&Quot;

2022-03-31 00:00:00 python python-import

问题描述

我导入了许多不同的脚本,所以在我的文件顶部,它被导入语句弄得乱七八糟,即:

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文件,您甚至可以创建一个根本没有文件的模块。这是概念的命名,这是一个横向问题。

相关文章