Python如何跨文件修改变量?

我想在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

这个怎么解决呢?

阅读 8.6k
2 个回答

这不行的,你a import b,b import a ,循环引用了.
python在引用一个文件时,会先将文件运行一遍,a import b 等于说先运行一遍b,但是b里import 了a,又会先运行 一遍a,形成死循环了.

我觉得你想知道的答案不能解决你真正的需求.

我也猜不出来你想实现这个方法的真正目的.但是这个功能应该设计成:
b中实现了一个方法,接收一个变量旧的状态,返回一个变量的新的状态
a中调用这个方法,传入旧状态,将返回的新的值重新复制给变量.

a模块改成如下形式。在自身是主程序时才导入其他模块

if __name__ == '__main__':
    import b
    test()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题