Ich versuche, eine Zählerfunktion zu erstellen, die sich ihren Zustand merkt, aber ich erhalte einen UnboundLocalError, wenn ich den Zähler erhöhe. Weiß jemand warum?
Minimal reproduzierbares Beispiel
Code: Select all
def make_counter():
count = 0
def inc(step=1):
if step > 0:
count += step
return count
return inc
c = make_counter()
print(c())
Fehler
Code: Select all
UnboundLocalError: local variable 'count' referenced before assignment
Ich habe erwartet, dass inc() die Variable count von make_counter() aktualisiert. Warum behandelt Python count als lokal innerhalb von inc() und wie aktualisiert man die äußere Variable richtig?