我正在編寫一個程序,涉及從另一個模塊調用的回調,以及需要訪問全局變量的回調。
似乎分配給全局變量的更改在回調函數中看不到,回調函數只能看到原始分配。我猜是因爲從其他模塊導入。
寫這種模式的正確方法是什麼?
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