Python模块之间的相互引用冲突问题

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

异常

python交叉循环引用即在a中调用b同时b中又调用a会引发相互引用的冲突。

A、B、C三个py文件文件中定义了方法或者变量

A文件中 from B import b
B文件中 from A import a
C文件中 from A import a

异常ImportError cannot import name ‘goods_bp’ from partially initialized module ‘goods’ (most likely due to a circular import)

提示循环导入

解决办法一

规划好代码的层级

哪些是公共方法哪些是业务逻辑把这些提前想好有利于后期的维护。

为了要解决这个问题需要先理解在python中使用import时代码到底是如何运行的

当我们import一个文件时python会首先去查找这个文件之前是否被import过如果这个文件之前有被import过就不会重新再import一次。

所以如果A模块代码里import了B模块并且B模块里又import了A模块python的执行顺序会变成这样开始执行模块A当A执行到import B的地方则停止执行A模块后面的代码转而开始执行B模块的代码当B模块从头执行到import A的地方时python此时并不会回过头去接着执行A剩余的代码而且将A模块在中断前已经初始化的属性全加载到B模块中。

了解了import的执行过程那么就可以给出相应的解决方案了

在module的顶部引入引入another module绝对引入

在module底部引入another module的attribute而非another module用from

函数顶部引入可以用from

解决方法二

不要使用A和B互相导入的写法可以再新建一个python文件存放例如

新建一个D文件将A、B文件的变量移动至D文件中

修改A文件导入为 from D import b

修改B文件导入为 from D import a

————————————————

https://blog.csdn.net/qdPython/article/details/108713162

https://blog.51cto.com/u_15214399/2807973

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python