自动导入给定文件夹中的所有Python文件?

时间:2012-12-29 19:47:54

标签: python python-2.7 python-2.x python-module

我对Python比较陌生,我尝试学习“Pythonic”的做法,以便在Python开发方面建立坚实的基础。也许我想要实现的不是Python,但我仍然试图找到解决这个问题的“正确”方法。

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

我尝试删除它们,然后将这些导入插入到文件夹中的空 init .py中,但它没有做到这一点。

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

如何执行常规导入?

非常感谢,非常感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

正如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.

如果你不能忍受(毕竟这会让电话更加冗长)那么三个进口的复制品确实很好。

答案 1 :(得分:3)

我同意DrewV,它完全是pythonic

File1中:

import xyz

import abc

...

文件2:

import xyz

以下链接也解决了一个几乎相同的问题:

python multiple imports for a common module

正如它解释的那样,Python完成了优化模块负载的工作,因此您可以编写多个import语句而不用担心性能损失,因为模块只能加载一次。事实上,列出每个文件中的所有导入使得它明确地清楚每个文件所依赖的内容。

有关导入如何与命名空间交互的讨论,请参阅:

Python imports across modules and global variables