-3

我有 K python 文件需要在任何地方都存在,以前我试图分离它们的逻辑并在每个 python 代码中一个一个地导入它们,现在我只想循环导入这些 K 文件中的每一个。

似乎这可能会导致 K^2 负载,但是我无法释放足够的大脑空间来实际考虑它。

假设 K=4 并且有 a.py,b.py,c.py,d.py:我正在考虑在 a.py 的末尾从 b.py,c.py,d.py 导入所有内容-and- b.py c.py 和 d.py 只会在顶部导入 a.py。并且 any.py 只是导入 a.py 因为一切都已经在其中了。

另一种选择是 any.py 导入 a.py b.py c.py d.py,但是很难将这 4 个分开。

4

2 回答 2

3

正如所有评论所指出的那样,这是一个可疑的设计,可能会误导您和您的合作者/读者,使维护更加困难等。

但这不是性能问题。

当您多次调用同一事物的导入时,每次在第一次之后都需要恒定(几乎没有)时间。(默认)导入机制在 sys.modules 中查找它,发现它已经存在,然后返回它。所以,这里没有 O(K^2) ;没关系)。

你可以很容易地自己测试一下。创建这些文件:

# a.py
print('a')
import b
import c

# b.py
import a
print('b')

# c.py
import a
print('c')

现在,启动 Python 解释器并执行以下操作:

>>> import a
a
b
c
>>> import b
>>> import a

每个项目只出现一次,因为进口商print在第一次之后永远不会得到声明。

于 2013-03-29T22:54:15.933 回答
2

This is basically what packages are for. Put all the Python files in a directory, add an __init__.py that imports them all, and then you can just import the directory as a Python module.

于 2013-03-29T22:58:13.880 回答