Ada*_*ths 2 python import module circular-dependency python-2.7
好的,就是这样。
我不想放弃我的代码,但是如果您确实需要它,我会的。我有两个彼此需要一点点的模块。这些模块称为webhandler和datahandler。
在webhandler中,我有一行:
import datahandler
Run Code Online (Sandbox Code Playgroud)
在数据处理程序中,我还有另一行:
import webhandler
Run Code Online (Sandbox Code Playgroud)
现在我知道这是糟糕的代码,并且这样的循环导入会导致代码运行两次(这是我试图避免的事情)。
但是,数据处理程序模块需要访问Web处理程序模块中的多个功能,并且Web处理程序模块需要访问在数据处理程序模块中生成的多个变量。除了将功能移动到不同的模块之外,我没有看到其他解决方法,但这会破坏程序的组织,并且对模块命名没有逻辑意义。
有什么帮助吗?
循环依赖是代码异味的一种形式。如果您有两个相互依赖的模块,那么这是一个非常糟糕的迹象,您应该重构您的代码。
有几种不同的方法可以做到这一点;哪个最好取决于你在做什么,以及每个模块的哪些部分被另一个模块实际使用。
其他人关于不进行循环导入的说法是最好的解决方案,但是如果您最终绝对需要它们,则通常仅在其中一个模块的一种方法或功能之内。因此,您可以安全地执行以下操作:
#modA.py
import modB
#modB.py
def methodDependingOnA():
import modA
...
Run Code Online (Sandbox Code Playgroud)
每次调用该函数时都会有一点开销,但是除非一直被调用,否则导入的开销很低。
| 归档时间: |
|
| 查看次数: |
2964 次 |
| 最近记录: |