Python循环依赖

时间:2016-10-14 05:32:45

标签: python

我们为一个新项目选择了python,因为我们想要使用一种语言,我们可以用非冗长的方式编写漂亮的代码。

我们以前编写代码的顾问提供了一个很好的工作解决方案。但是当我们查看代码时,它充满了函数local from X import Y。我们立即将导入移动到文件的顶部,但现在受到循环依赖性的影响。我们绝对不希望解决循环依赖关系,我们也不希望将导入移回函数,这非常冗长。

问题1:我们如何解决这个问题?

问题2:这种循环依赖无意义是什么?当其他语言似乎解决了这个问题时,Python社区如何接受这个呢? (我希望它不被视为某种特征)

2 个答案:

答案 0 :(得分:3)

循环依赖是由A导入B和B导入A引起的。通常的解决方案是创建一个导入B和A的C,这样A和B就不必互相导入。如果这两个文件的耦合太紧,你也可以将它们连接起来。

这几乎是所有语言中的问题;使用循环依赖关系解析代码更加困难,因此大多数语言将其限制为有向非循环图。

通过在函数内导入模块,可以避免循环依赖。有些。首先A导入B,然后,当调用该函数时,B可以导入A.因为你必须调用B的函数来导入A,你不能得到相同的A导入B导入A导入B ......循环。

答案 1 :(得分:2)

我们处理循环依赖,因为我们通常不会创建它们。当两个模块相互需要时,这并不常见。

如果您无法将A和B模块重构为同时导入的公共模块C,则只应在其中一个模块中使用本地导入,仅在需要它的函数中使用。

但实际上,你最好修改你的模块。