def make_accumulator(init):
def accumulate(part):
init = init + part
return init
return accumulate
A = make_accumulator(1)
print A(2)
gibt mir: -Unbound Lokale Fehler beim Zuweisen von Arg Funktion
Traceback (most recent call last):
File "make-accumulator.py", line 8, in <module>
print A(2)
File "make-accumulator.py", line 3, in accumulate
init = init + part
UnboundLocalError: local variable 'init' referenced before assignment
Warum ist init nicht sichtbar im Inneren ansammeln?
wo Sie init initialisiert hat ... wenn Interpreter will init = init + Teil tun, sollte es vor initialisiert wissen init .. –
einen Konstruktor verwenden, um festgelegt der init-Wert ... 'def make_accumulator (selbst, init): def __init __ (selbst, init): self.init = init' –
@ lokesh1729 Sie übergeben ihren Wert an' make_accumulator', es ist eine Closure-Variable. Wenn sie nur "init + part" zurückgeben, wird es gut funktionieren. –