首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:导入“导入文件”

Python:导入“导入文件”
EN

Stack Overflow用户
提问于 2011-06-02 02:52:27
回答 2查看 16.9K关注 0票数 24

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

代码语言:javascript
复制
from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...
...

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-02 03:11:31

您正在进行global include file mistake again。尽管只有一个模块导入了所有模块(而不是所有模块都导入了全局模块),但剩下的一点是,如果有充分的理由将所有这些模块都收集到一个通用名称下,那就没问题。原因是文档。如果我打开你的文件,只看到一次导入,我没有得到任何关于导入的内容和它来自哪里的信息。另一方面,如果我有进口清单,我一眼就知道什么是需要的,什么是不需要的。

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

代码语言:javascript
复制
from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...

例如,我假设您正在导入一个类,如下所示

代码语言:javascript
复制
from somewhere.fileA import MyClass

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

代码语言:javascript
复制
 from somewhere import fileA 

 <later>

 a=fileA.MyClass()

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

代码语言:javascript
复制
 a=MyClass()

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

最后注意:当你说"fileA“的时候,你正在做一个错误的事情。有模块(或包),而不是文件。模块映射到文件,包映射到目录,但它们也可能映射到egg文件,您甚至可以创建一个根本没有文件的模块。这是概念的命名,这是一个横向问题。

票数 36
EN

Stack Overflow用户

发布于 2011-06-02 02:53:39

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

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6206204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档