我正在导入很多不同的脚本,因此在我的文件顶部它会被导入语句弄乱,即:
from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...
...
有没有一种方法可以将所有这些内容移动到其他地方,然后我所要做的就是导入该文件,这样它只是一个干净的导入?
我强烈反对你想做的事。您又犯了全局包含文件错误。尽管只有一个模块正在导入所有模块(而不是所有模块都导入全局模块),但剩下的一点是,如果有充分的理由将所有这些模块收集在一个通用名称下,那就没问题了。如果没有原因,那么它们应该作为单独的包含保留。原因是文档。如果我打开您的文件,只看到一次导入,我就无法获得有关导入内容及其来源的任何信息。另一方面,如果我有进口清单,我一眼就知道需要什么,不需要什么。
此外,我认为您还犯了另一个重要错误。当你说
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 来自哪里,我将不得不 grep 周围的所有文件才能找到它。使用模块名称限定它可以让我立即了解它来自哪里,并通过 /search 立即找到来自 fileA 模块的内容在您的程序中使用的位置。
最后一点:当你说“fileA”时,你犯了一个错误。有模块(或包),而不是文件。模块映射到文件,包映射到目录,但它们也可能映射到egg文件,甚至可以创建一个根本没有文件的模块。这是概念的命名,是横向问题。
当然有;只需在主文件所在的同一目录中创建一个名为
myimports.py
的文件并将导入文件放在那里即可。然后你可以简单地在你的主脚本中使用from myimports import *
。