我试图让更改的变量影响另一个模块。其他模块似乎没有注意到这一变化。另一个模块中的更改变量不会更新
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'未定义' –