为什么不使用全局关键字就没有错误

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

一切正常!

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


慕尼黑5688855
浏览 151回答 2
2回答

精慕HU

在global当关键字时,才需要重新绑定的名称。您的操作将突变该对象。

慕勒3428872

您正在使用modelDictfrom的变量globals(python试图modelDict在本地变量中查找,但随后无法尝试在其中找到globals并成功)。如果您使用外部代码中定义的变量进行读取或更新,则此方法有效。d = {}def foo():&nbsp; &nbsp; a = d.get('x')&nbsp; &nbsp; d[4] = Truefoo()如果您尝试将新数据重新分配给具有该名称的变量(将其重新绑定),则会收到错误消息。>>> d = {}>>> def foo():&nbsp; &nbsp; &nbsp; &nbsp; a = d.get('x')&nbsp; &nbsp; &nbsp; &nbsp; d = {4: True}>>> foo()Traceback (most recent call last):&nbsp; File "<stdin>", line 1, in <module>&nbsp; File "<stdin>", line 2, in fooUnboundLocalError: local variable 'd' referenced before assignment
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python