为什么没有使用global关键字就没有错误

时间:2013-06-26 13:24:05

标签: python python-2.7 scope global-variables global

this file中我使用全局声明的名为modelDict的字典,我在多个函数中使用它(addCharToModelDict, dumpModelDict)。我没有在这些函数中使用global关键字来使用全局modelDict addCharToModelDict正在更新它,dumpModelDict最终将其写回文件。

一切正常!!

为什么会这样?是不是必须使用全局关键字?

2 个答案:

答案 0 :(得分:7)

只有在重新绑定名称时才需要global关键字。您的操作改变对象。

答案 1 :(得分:2)

你正在使用来自modelDict的{​​{1}}变量(python试图在本地找到globals但是不能然后它试图在modelDict中找到它并成功了。这有效如果您使用外部代码中定义的变量进行读取或更新。

globals

如果您尝试使用此名称将新数据重新分配给变量(重新绑定),您将收到错误。

d = {}
def foo():
    a = d.get('x')
    d[4] = True
foo()
相关问题