繁体   English   中英

Python:导入“导入文件”

[英]Python: Importing an “import file”

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

from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...
...

有没有办法将所有这些移动到其他地方,然后我所要做的就是导入该文件,所以它只是一个干净的导入?

我强烈建议您不要这样做。 又犯了全局包含文件错误 尽管只有一个模块正在导入所有模块(而不是所有模块都导入全局模块),但剩下的一点是,如果有正当理由以通用名称收集所有这些模块,那很好。 如果没有理由,那么它们应该作为单独的包含保存。 原因是文档。 如果我打开你的文件,只看到一个导入,我不会得到任何关于导入什么以及它来自哪里的信息。 另一方面,如果我有进口清单,我一眼就知道需要什么,不需要什么。

此外,我假设您正在做另一个重要的错误。 当你说

from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...

我假设您正在导入,例如,一个 class,像这样

from somewhere.fileA import MyClass

这是错误的。 这种替代解决方案要好得多

 from somewhere import fileA 

 <later>

 a=fileA.MyClass()

为什么? 两个原因:第一,命名空间。 如果您有两个具有名为 MyClass 的 class 的模块,则会发生冲突。 第二,文档。 假设您使用第一个选项,我在您的代码中找到以下行

 a=MyClass()

现在我不知道这个 MyClass 是从哪里来的,我必须在你所有的文件周围 grep 才能找到它。 使用模块名称限定它可以让我立即了解它的来源,并立即通过 /search 找到来自 fileA 模块的内容在您的程序中使用的位置。

最后一点:当你说“fileA”时你做错了。 有模块(或包),而不是文件。 模块 map 到文件,并将 map 打包到目录,但它们也可以 map 到 egg 文件,你甚至可以创建一个根本没有文件的模块。 这是概念的命名,是横向问题。

当然有; 只需在您的主文件所在的同一目录中创建一个名为myimports.py的文件,然后将您的导入文件放在那里。 然后,您可以简单地在主脚本中使用from myimports import *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM