在此文件中,我正在使用一个名为modelDict全局声明的字典,并且在多个函数(addCharToModelDict, dumpModelDict)中使用它。我还没有global在这些函数中使用关键字来使用global modelDict。addCharToModelDict正在更新它,最后dumpModelDict将其写回到文件中。一切正常!为什么会这样?使用全局关键字不是必需的吗?
2 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
您正在使用modelDictfrom的变量globals(python试图modelDict在本地变量中查找,但随后无法尝试在其中找到globals并成功)。如果您使用外部代码中定义的变量进行读取或更新,则此方法有效。
d = {}
def foo():
a = d.get('x')
d[4] = True
foo()
如果您尝试将新数据重新分配给具有该名称的变量(将其重新绑定),则会收到错误消息。
>>> d = {}
>>> def foo():
a = d.get('x')
d = {4: True}
>>> foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in foo
UnboundLocalError: local variable 'd' referenced before assignment
添加回答
举报
0/150
提交
取消