在this file中我使用全局声明的名为modelDict
的字典,我在多个函数中使用它(addCharToModelDict, dumpModelDict
)。我没有在这些函数中使用global
关键字来使用全局modelDict
addCharToModelDict
正在更新它,dumpModelDict
最终将其写回文件。
一切正常!!
为什么会这样?是不是必须使用全局关键字?
答案 0 :(得分:7)
只有在重新绑定名称时才需要global
关键字。您的操作改变对象。
答案 1 :(得分:2)
你正在使用来自modelDict
的{{1}}变量(python试图在本地找到globals
但是不能然后它试图在modelDict
中找到它并成功了。这有效如果您使用外部代码中定义的变量进行读取或更新。
globals
如果您尝试使用此名称将新数据重新分配给变量(重新绑定),您将收到错误。
d = {}
def foo():
a = d.get('x')
d[4] = True
foo()