2012-12-29 80 views
4

我对Python相对比较陌生,我尝试学习Python的开发方式,以此来构建一个坚实的基础。也许我想要实现的不是Python,但我仍然在寻求找到解决这个问题的“正确”方法。自动导入给定文件夹中的所有Python文件?

我正在构建一个应用程序,为此我正在创建模块。我只注意到我的一个模块有7个不同的.py Python文件,全部导入3个不同的东西。所有这些文件共享这些导入。

我尝试删除它们,并将这些导入插入到文件夹中空的init .py中,但它并没有成功。

如果可能,由于所有这些模块文件都需要这些导入,所以我不希望它们被逐个导入到每个文件中。

我该怎么做才能执行常用导入?

非常感谢你,我非常感谢你的帮助。

+2

进口很便宜。在多个位置导入相同的模块不会成为问题。 –

+2

我认为你不应该使用一个通用的导入,而是显式地在每个文件中导入依赖关系。 –

回答

4

随着Zen of Python指出,“显式优于隐式”,这是一个很好的例子。

在导入中显式列出模块的依赖关系非常有用,它意味着文件中的每个符号都可以通过简单的文本搜索追踪到它的原点。例如。如果您在文件中搜索some_identifier,您可以在文件中找到定义,或from some_module import some_identifier。直接引用some_module.some_identifier更为明显。 (这也是一个原因,你不应该做from module import *

有一件事你可以做,又不失上述财产,是导入你的三个共享的模块到第四模块:

#fourth.py 
import first 
import second 
import third 

然后...

#another.py 
import fourth 

fourth.first.some_function() 
#etc. 

如果你不能忍受这一点(它确实使调用更加冗长,毕竟),那么三个进口的重复是很好,真的。

3

我DrewV同意,这是完全符合Python做

文件1:

import xyz 

import abc 

...

文件2:

import xyz 

几乎相同的问题也已已在以下链接中解决:

python multiple imports for a common module

,因为它解释,Python做优化模块负载的工作,所以你可以写多个import语句,而无需担心性能的损失,因为模块是唯一加载一次。实际上,列出每个文件中的所有输入项可以明确清楚每个文件所依赖的内容。

而对于进口如何与命名空间的互动讨论,请参见:

Python imports across modules and global variables

相关问题