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 に答える