我試圖讓更改的變量影響另一個模塊。其他模塊似乎沒有注意到這一變化。另一個模塊中的更改變量不會更新
a.py:
import b
b.changeMyVar()
print(b.myVar["key"])
b.py:
myVar = {"key": "foo"}
def changeMyVar():
myVar["key"] = "value"
我期待(上運行a.py)什麼:
value
我能得到什麼:
foo
我該如何做這項工作?爲什麼它不起作用?如果myVar
是一個由changeMyVar
(這兩種情況都發生在我的程序中)突變的字典,情況會不同嗎?
請注意我沒有寫from b import *
,這是我理解的邪惡。
編輯1:正如評論者指出的,如果myVar
是不可變的對象,沒有global myVar
,這將無法正常工作。我改變了這個例子以更好地反映我的意思。
編輯2:我忘了添加b.
但是,我的問題沒有改變。變量已定義,但運行時更改從其他模塊不可見。我再次編輯了代碼來澄清我的問題。
這不是在同一模塊級連工作更不用說跨模塊。 –
函數定義一個範圍... –
用你的新代碼,我希望你得到'NameError:name'changeMyVar'未定義' –