1、循环引用:我需要你的东西,同时你也需要我的东西

新建2个测试文件

a:

b:

在两个文件中互相导入

运行b文件(先判断a是否在sys.modules的字典中存在,如果不存在就运行b的程序)

  • b先判断a是否在sys.modules的字典中存在,如果不存在就运行一遍a文件
  • 运行到a文件的时候,第一段代码也是引用b,所以a先判断b在不在sys.modules中,当然是不在的,所以运行b文件,所以显示打印出b file
  • 然后继续运行a文件
  • a文件运行完之后,返回b文件继续运行

会发现没有报错,就是没有发生循环引用

2、如何构造循环导入

修改a,b文件

再次运行的时候会报错

原因:

在上面步骤中的第二步的时候,由于a还没有被完全运行完毕,b就需要引入a的函数的时候,由于a没有完全运行完毕,无法让b引入a的函数,导致报错

3、如何解决循环引入的方法

(1)将公共的部分放入另一个文件当中,拆开循环