我想在b模块中修改a模块的变量,然后在a模块中使用修改后的变量.
a模块代码:
import b
flag = False
def set_flag(is_ok):
global flag
flag = is_ok
def test():
global flag
# 在b模块中修改a的变量
b.change_var()
# 使用修改后的变量
if flag:
print('success')
else:
print('failure')
print(flag)
if __name__ == '__main__':
test()
b模块代码:
import a
def change_var():
a.set_flag(True)
运行结果:
failure
False
这个怎么解决呢?
这不行的,你a import b,b import a ,循环引用了.
python在引用一个文件时,会先将文件运行一遍,a import b 等于说先运行一遍b,但是b里import 了a,又会先运行 一遍a,形成死循环了.
我觉得你想知道的答案不能解决你真正的需求.
我也猜不出来你想实现这个方法的真正目的.但是这个功能应该设计成:
b中实现了一个方法,接收一个变量旧的状态,返回一个变量的新的状态
a中调用这个方法,传入旧状态,将返回的新的值重新复制给变量.