为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑5688855 2021-03-31 17:18:40
在此文件中,我正在使用一个名为modelDict全局声明的字典,并且在多个函数(addCharToModelDict, dumpModelDict)中使用它。我还没有global在这些函数中使用关键字来使用global modelDict。addCharToModelDict正在更新它,最后dumpModelDict将其写回到文件中。一切正常!为什么会这样?使用全局关键字不是必需的吗?
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-04-06
?
慕勒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


查看完整回答
反对 回复 2021-04-06
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信