循环导入的python解决方法

问题描述 投票:2回答:4

好吧就是这样。

我不想放弃我的代码,但是如果您确实需要,我会的。我有两个彼此需要一点点的模块。这些模块称为webhandler和datahandler。

在webhandler中,我有一行:

import datahandler 

并且在数据处理程序中,我还有另一行:

import webhandler

现在我知道这是糟糕的代码,并且像这样的循环导入导致代码运行两次(这是我试图避免的事情。

但是,数据处理程序模块需要访问Web处理程序模块中的多个功能,并且Web处理程序模块需要访问在数据处理程序模块中生成的多个变量。除了将功能移至不同的模块外,我没有看到其他解决方法,但这会破坏程序的组织,并且对模块命名没有逻辑意义。

有帮助吗?

python python-2.7 import module circular-dependency
4个回答
2
投票
有几种不同的方法可以做到这一点;哪个最好取决于您的工作,以及每个模块实际使用的哪个部分。

一个非常简单的解决方案是只合并两个模块,因此您只有一个模块,该模块仅取决于自身,或者取决于其自身的内容。这很简单,但是由于您之前曾分离过模块,因此您可能会以这种方式引入新问题,因为您不再需要分离关注点。

    另一种解决方案是确保确实需要依赖项。如果模块中只有很少一部分相互依赖,则可以以不再需要循环依赖的方式移动这些位,或者使循环依赖不再成为问题的utilize the way imports work。 >
  • 更好的解决方案可能是将依赖项移动到单独的新模块中。如果命名确实是最棘手的问题,那么您可能做对了。它可能
  • “破坏[程序]的组织”
  • ,但由于您具有循环依赖关系,因此您的安装还是存在固有的问题。

5
投票

1
投票
Webhandler模​​块需要访问在datahandler模​​块中生成的几个变量

0
投票
此方法与在函数内部执行import基本相同,但性能稍好。
© www.soinside.com 2019 - 2024. All rights reserved.