[英]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.