如何避免循环导入循环

How to avoid circular import looping

我对 python 中的导入感到困惑。看来我有循环导入的问题,但我不确定如何以正确的方式解决这个问题。一个例子:

文件 1:

value = 5

import file2
file2.set()

文件 2:

import file1

def set():
    file1.value = 6

您有几个选择:

  1. 如果需要紧密链接,请将所有代码放在一个文件中
value = 5

def set():
    value = 6

set()
  1. 将使用其他部分的代码放在第三个文件中,或者换句话说,分解你的代码以避免循环引用——你的例子有点太简单了,无法实现不过

  2. 将值传递给您要使用的函数,或传递您要修改的对象;无论如何,导入和修改另一个模块的全局变量并不是设计程序的好方法:

# this is my_module.py

def set_value(x):
    x.value = 6


def increment(x):
    return x + 1

其他地方:

import my_module


class X:
    value = 5


x = X()
my_module.set_value(x)

y = 5
y = my_module.increment(y)