【问题标题】:keep a variable not-local but not global in python 3在python 3中保持变量不是局部但不是全局的
【发布时间】:2014-11-07 00:54:58
【问题描述】:

所以我在 python 3.4.1 中有一小段代码,我只是在玩闭包

def bam(x):
    def paw():
        x+=1
        print(x)
    def bang():
        x+=1
        print(x)
    return paw, bang

本来想看看能不能打电话

a=bam(56)
a[0]()
a[0]()
a[0]()
a[0]()
a[1]()

然后看看最后一行是否会像 javascript 一样打印大于 56 的数字(我认为)

而是在“爪子”中制作“x”,因为我调用了+=(对吗?),当它尝试在x+=1中获取它时抛出错误

  File "C:/Users/Nancy/Desktop/delete2.py", line 3, in paw
    x+=1
UnboundLocalError: local variable 'x' referenced before assignment

是否有某种规则禁止在外部范围内修改变量?

【问题讨论】:

    标签: python python-3.x python-nonlocal


    【解决方案1】:

    分配给x,这意味着Python默认x是一个本地的。

    明确告诉 Python 是 nonlocal

    def bam(x):
        def paw():
            nonlocal x
            x+=1
            print(x)
        def bang():
            nonlocal x
            x+=1
            print(x)
        return paw, bang
    

    【讨论】:

    • 啊,谢谢,非本地/全局 x 必须在分配之前来吗?
    猜你喜欢
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2019-07-24
    相关资源
    最近更新 更多