我正在导入许多不同的脚本,所以我的文件顶部被import语句弄得杂乱无章,例如:
from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...
...
有没有办法把它们全部移动到其他地方,然后只需导入该文件,这样就只需要一个干净的导入了吗?
我正在导入许多不同的脚本,所以我的文件顶部被import语句弄得杂乱无章,例如:
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从哪里来,我将不得不在所有文件中进行搜索才能找到它。通过使用模块名称限定,我可以立即理解它来自哪里,并且通过/search立即找到在程序中使用fileA模块的位置。
最后注意:当你说“fileA”时,你犯了一个错误。有模块(或包),而不是文件。模块映射到文件,包映射到目录,但它们也可能映射到egg文件,甚至可以创建没有任何文件的模块。这是概念命名问题,是一个次要问题。
当然可以;只需在主文件所在的相同目录中创建一个名为 myimports.py
的文件,并将导入语句放在里面。随后,您就可以在主脚本中简单地使用 from myimports import *
来导入这些模块。
import myimports
不起作用吗?导入不是递归的吗? - Aaron Franke