好吧,就是这样。在
我不想泄露我的代码,但如果你真的需要我会的。我有两个模块,需要互相学习。这些模块称为webhandler和datahandler。在
在webhandler中,我有一行:
import datahandler
在datahandler中我有另一行:
^{pr2}$现在我知道这是很糟糕的代码,像这样的循环导入会导致代码运行两次(这是我试图避免的)。在
然而,datahandler模块需要从webhandler模块访问几个函数,而webhandler模块需要访问datahandler模块中生成的几个变量。除了将函数移到不同的模块之外,我没有看到任何解决方法,但这会破坏程序的组织,并且对模块命名没有任何逻辑意义。在
有什么帮助吗?在
将任何“生成的”数据推送到第三个位置可能是有意义的。因此}函数在需要时调用}函数(设置/获取全局字典元素的包装器是最简单的方法)。在
datahandler
函数在适当时调用config.setvar( name, value )
,而{config.getvar( name )
。config
将是第三个子模块,包含您编写的简单setvar
和{那么}只需要
datahandler
代码将import webhandler, config
,而{import config
。在我同意poke然而,对这样一个问题的需求暴露了这样一个事实,即你可能还没有像你所想的那样把设计完成得既整齐又合乎逻辑。如果是我,我会重新思考模块划分的方式。在
其他人所说的不进行循环导入是最好的解决方案,但是如果您最终绝对需要它们,那么通常只需要其中一个模块的一个方法或函数。因此,您可以安全地执行以下操作:
每次调用函数时导入都会有一些开销,但除非一直调用,否则开销相当低。在
循环依赖是一种代码味道。如果有两个互相依赖的模块,那么这是一个非常糟糕的信号,您应该重新构造代码。在
有几种不同的方法可以做到这一点;哪种方法最好取决于您正在做什么,以及每个模块的哪些部分实际被另一个模块使用。在
相关问题 更多 >
编程相关推荐