python循环依赖项

Python circular dependencies

本问题已经有最佳答案,请猛点这里访问。

我们为一个新项目选择了Python,因为我们希望使用一种语言,在这种语言中我们可以以非冗长的方式编写漂亮的代码。

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

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

问题2:什么是循环依赖性无意义?当其他语言似乎已经很好地解决了这个问题时,Python社区如何能够接受这个问题?(我希望这不是某种特征)


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

这在几乎所有语言中都是一个问题;解析具有循环依赖关系的代码比较困难,因此大多数语言都将其限制为有向非循环图。

通过在函数中导入模块,可以避免循环依赖。有点。首先A导入B,然后,当调用函数时,B可以导入A。因为必须调用函数B才能导入A,所以不能得到相同的A导入B导入A导入B…循环。


我们处理循环依赖关系是因为,嗯,我们通常不创建它们。当两个模块相互需要时,这种情况并不常见。

如果您不能将A和B模块重构为同时导入的公共模块C,那么您应该只对其中一个模块使用本地导入,只在需要它的函数中使用。

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