我有K python文件需要存在于任何地方,以前我试图分离他们的逻辑并在每个python代码中逐个导入它们,现在我只想循环导入彼此内部的每个K文件。 / p>
这似乎会导致K ^ 2负载,但是我无法释放足够的脑空间来实际考虑它。
假设K = 4并且有a.py,b.py,c.py,d.py:我正在考虑从b.py,c.py,d.py导入所有内容。 a.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个单独分开。
答案 0 :(得分:3)
正如所有评论所指出的那样,这是一个可疑的设计,可能会误导你和你的合作者/读者,使维护更加困难等等。
但这不是性能问题。
当您多次对同一个东西调用import时,每次在第一个之后需要持续(几乎没有)时间。 (默认)导入机制在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
语句。
答案 1 :(得分:2)
这基本上是包的用途。将所有Python文件放在一个目录中,添加一个导入它们的__init__.py
,然后只需将该目录导入为Python模块。