跨模块修改共享变量问题:如何让模块C输出预期值?
解决方法
首先明确代码中的两处关键问题:
- 模块B错误调用了
C.up(text),但up函数实际定义在模块A中; - 模块C执行时,模块B的代码未被触发,导致A的
state始终是初始值。
修正后的代码
模块A(保持不变)
state = "yada yada" def up(msg): global state state = msg
模块B(修正函数调用)
import A text = "nana nana" A.up(text) # 改为调用模块A的up函数,更新state
模块C(先触发模块B的执行)
import A import B # 导入B时会执行其中的代码,完成state的更新 print(A.state)
执行说明
直接运行模块C即可,此时导入B会触发其代码执行,调用A.up()更新state为"nana nana",之后打印就能得到预期结果。
你也可以通过主脚本控制执行顺序,比如新建main.py:
import A import B import C
运行main.py同样能得到正确输出。
内容的提问来源于stack exchange,提问作者Greggie
相关产品推荐
相关产品推荐

