繁体   English   中英

在python 3中保持变量不是本地变量但不是全局变量

[英]keep a variable not-local but not global in python 3

所以我在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的数字(我认为)

但是取而代之的是它在'paw'中使'x'成为本地,因为我调用+= (对吗?),并且当它尝试在x+=1获取它时抛出了错误

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

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

您正在分配给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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM