可能重复:
Modify the function variables frominner function in python
说我有这个python代码
def f():
x=2
def y():
x+=3
y()
这引起了:
UnboundLocalError: local variable 'x' referenced before assignment
那么,如何从内部函数“修改”local variable 'x'
?在内部函数中将x定义为全局也会引发错误。
答案 0 :(得分:9)
您可以在Python 3中使用nonlocal
statement:
>>> def f():
... x = 2
... def y():
... nonlocal x
... x += 3
... print(x)
... y()
... print(x)
...
>>> f()
5
5
在Python 2中,您需要将变量声明为外部函数的属性以实现相同的目的。
>>> def f():
... f.x = 2
... def y():
... f.x += 3
... print(f.x)
... y()
... print(f.x)
...
>>> f()
5
5
或使用我们也可以使用dictionary
或list
:
>>> def f():
... dct = {'x': 2}
... def y():
... dct['x'] += 3
... print(dct['x'])
... y()
... print(dct['x'])
...
>>> f()
5
5