可能重复:
从python中的内部函数修改函数变量
说我有这个 python 代码
def f():
x=2
def y():
x+=3
y()
这引发了:
UnboundLocalError: local variable 'x' referenced before assignment
那么,如何local variable 'x'
从内部函数“修改”?在内部函数中将 x 定义为全局也会引发错误。
可能重复:
从python中的内部函数修改函数变量
说我有这个 python 代码
def f():
x=2
def y():
x+=3
y()
这引发了:
UnboundLocalError: local variable 'x' referenced before assignment
那么,如何local variable 'x'
从内部函数“修改”?在内部函数中将 x 定义为全局也会引发错误。
您可以在 Python 3中使用nonlocal
语句:
>>> 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
或使用我们也可以使用 adictionary
或 a list
:
>>> def f():
... dct = {'x': 2}
... def y():
... dct['x'] += 3
... print(dct['x'])
... y()
... print(dct['x'])
...
>>> f()
5
5