/ / confused by python3 closure [duplicate] - python, python-3.x, closures

mylić przez zamknięcie python3 [duplicate] - python, python-3.x, closures

ten kod

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

return f

print(gen(1)())

działa dobrze.

ale kiedy uruchomię ten kod,

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

return f

print(gen(1)())

Mam błąd, który pokazuje, że

UnboundLocalError: lokalna zmienna "x" przywoływana przed przypisaniem

co się z tym stało? i jak zrozumieć zamknięcie python3.

Odpowiedzi:

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

return f

print(gen(1)())