1

可能重复:
从python中的内部函数修改函数变量

说我有这个 python 代码

def f():
    x=2
    def y():
        x+=3
    y()

这引发了:

UnboundLocalError: local variable 'x' referenced before assignment

那么,如何local variable 'x'从内部函数“修改”?在内部函数中将 x 定义为全局也会引发错误。

4

1 回答 1

9

您可以在 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
于 2012-12-24T20:37:24.027 回答