获取 UnboundLocalError:在赋值错误之前引用了局部变量 [英] getting UnboundLocalError: local variable referenced before assignment error

查看:60
本文介绍了获取 UnboundLocalError:在赋值错误之前引用了局部变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在尝试运行此代码时收到 UnboundLocalError:在赋值错误之前引用的局部变量.根据 LEGB 规则,这应该运行良好.

I am getting getting UnboundLocalError: local variable referenced before assignment error while trying to run this code. As per LEGB rule this should run fine.

def xyz():
    count = 1
    def xyz_inner():
        count += 1
        print count
    xyz_inner()
    print count

推荐答案

参见 未绑定的本地错误

def xyz():
    count = 1
    def xyz_inner():
        count += 1
        print count, locals()
    xyz_inner()
    print count

print hasattr(globals, 'count')
print hasattr(xyz, 'count')

>>> 
False
False

在任何可变对象中定义变量,例如 dictlist(使用相同的引用)并使用增强赋值更新它.

Define variable in any mutable object like dict or list(uses same reference) and update it using augmented assignment.

它有效:-

def xyz():
    count = {'value': 1}
    def xyz_inner():
        count['value'] += 1
        print count['value'],
    xyz_inner()
    print count

xyz()

参见 python2.7中非本地的python闭包

这篇关于获取 UnboundLocalError:在赋值错误之前引用了局部变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆