0

这段代码

def gen(x):
    def f():
        return x

    return f

print(gen(1)())

效果很好。

但是当我运行这段代码时,

def gen(x):
    def f():
        x += 1
        return x

    return f

print(gen(1)())

我得到一个错误表明

UnboundLocalError:分配前引用的局部变量“x”

这是怎么回事?以及如何理解 python3 的关闭。

4

1 回答 1

2
def gen(x):
    def f():
        nonlocal x # add this line
        x += 1
        return x

    return f

print(gen(1)())
于 2013-03-23T03:50:14.473 回答