UnboundLocalError in Python-Closures erklärt
Die in der Frage beschriebene Situation dreht sich um ein grundlegendes Konzept in Python, das als Variablenbereich bekannt ist. Im Gegensatz zu Sprachen mit expliziten Variablendeklarationen bestimmt Python den Variablenbereich basierend auf der Zuweisung.
Beachten Sie den folgenden Code:
counter = 0 def increment(): counter += 1 increment()
Dieser Code löst einen UnboundLocalError aus. Warum?
In Python markiert eine Zuweisung innerhalb einer Funktion die Variable als lokal für diese Funktion. Die Zeile counter = 1 in der Funktion increment() impliziert, dass counter eine lokale Variable ist. Diese Zeile versucht jedoch, auf die lokale Variable zuzugreifen, bevor sie zugewiesen wird, was zum UnboundLocalError führt.
Um dieses Problem zu umgehen, haben Sie mehrere Möglichkeiten:
counter = 0 def increment(): global counter counter += 1
def outer(): counter = 0 def inner(): nonlocal counter counter += 1
Durch die Verwendung dieser Techniken können Sie lokale und globale Variablen darin korrekt manipulieren Schließungen, um unnötige Fehler zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum verursacht „counter = 1' innerhalb einer Python-Funktion einen „UnboundLocalError'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!