您正确理解了它。您不能
x在Python 2中的嵌套作用域中使用分配给。
在Python 3中,您仍然可以通过将变量标记为
nonlocal;来将其用作绑定事件。这是为此用例引入的关键字:
def f(x): def g(n): nonlocal x if n < 10: x = x + 1 g(n + 1) g(0)
在python 2中,您有一些解决方法;使用可变变量以避免绑定它,或者(ab)使用function属性:
def f(x): x = [x] # lists are mutable def g(n): if n < 10: x[0] = x[0] + 1 # not assigning, but mutating (x.__setitem__(0, newvalue)) g(n + 1) g(0)
要么
def f(x): def g(n): if n < 10: g.x = g.x + 1 g(n + 1) g.x = x # attribute on the function! g(0)



