我正在编写一个程序,涉及从另一个模块调用的回调,以及需要访问全局变量的回调。
似乎分配给全局变量的更改在回调函数中看不到,回调函数只能看到原始分配。我猜是因为从其他模块导入。
写这种模式的正确方法是什么?
Python全局变量和回调
第一模块:
# a.py
from b import runb
myGlobal=None
def init():
global myGlobal
myGlobal=1
def callback():
print myGlobal
def main():
init()
runb()
if __name__=='__main__':
main()
第二个模块:
#b.py
def runb():
from a import callback
callback()
我希望这个程序打印 '1',而是它打印 '无'
编辑: init只能被调用一次(这是一个复杂程序的简化)
你知道最好避免循环依赖:http://stackoverflow.com/questions/1556387/circular-import-dependency-in-python –
@Scorpion_God:这个链接讨论包之间的依赖关系,而不是模块。我知道最好避免一般的循环依赖,但有时替代品并不好。 – Photon