python 循环导入

记录前段时间学习 Flask 时遇到的循环导入问题python

何为循环导入?

栗子很简单, 如今有a.py, b.py, c.py 三个包, b.py 中导入 a.py, c.py 中导入 b.py , a.py 中导入c.py, 而后随便以一个文件为入口执行程序编程

假如以 a.py 做为程序入口, 大概就像下面这样函数

import c

def test():
    print('this a')

c.test()

如今执行a.py 就会报出导入错误(相似下面这个), 详细介绍在 core-python (python 核心编程) 中有介绍, 有时间能够看一下学习

ImportError: cannot import name XX

重点是, 怎么解决

  1. (直接最实在的方法) 将产生循环的包, 放在函数里进行调用, 好比刚才的 a.py 能够改为这样this

    def test():
    print('this a')
    
    def run():
    import c
    c.test()
  2. 若是了解程序的执行顺序的话, 也能够使用调整 import 顺序的方法解决, 可是我尝试的结果是: 这并不能100% 的解决问题code

  3. (终极解决方案) 要不仍是重构吧 (逃..)class

相关文章
相关标签/搜索