在python 3中保持变量不是局部但不是全局的
Posted
技术标签:
【中文标题】在python 3中保持变量不是局部但不是全局的【英文标题】:keep a variable not-local but not global in 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
是否有某种规则禁止在外部范围内修改变量?
【问题讨论】:
【参考方案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 必须在分配之前来吗?以上是关于在python 3中保持变量不是局部但不是全局的的主要内容,如果未能解决你的问题,请参考以下文章