Ungebundene Namen in Python: UnboundLocalError verstehen
Wenn in Python ein Name gefunden wird, prüft der Interpreter seinen Bindungsstatus innerhalb des aktuellen Bereichs. Wenn der Name nicht an einen Wert gebunden ist, wird ein Fehler ausgelöst. Um solche Fehler zu vermeiden, ist es wichtig zu verstehen, wie die Namensbindung funktioniert.
Die Natur ungebundener lokaler Namen
Ein UnboundLocalError tritt auf, wenn auf eine lokale Variable verwiesen wird, bevor sie zugewiesen wurde ein Wert oder bevor eine Bindungsoperation (z. B. Zuweisung, Funktionsparameter) stattgefunden hat. Diese Situation kann auftreten, wenn eine bedingte Anweisung die Ausführung des Bindungsvorgangs verhindert.
Bedenken Sie den folgenden Codeausschnitt:
def foo(): if False: spam = 'eggs' print(spam)
In diesem Beispiel ist die Variable spam nicht innerhalb des if gebunden Block der Anweisung, da die Bedingung „False“ ergibt. Wenn der Interpreter auf die print-Anweisung stößt, löst er einen UnboundLocalError aus, da er keinen gebundenen Wert für Spam finden kann.
Bindungsoperationen
In Python legen Bindungsoperationen den Bereich fest eines Namens. Zu diesen Operationen gehören:
Global und lokal Bindungen
Lokale Namen sind innerhalb eines bestimmten Bereichs gebunden, normalerweise einer Funktion oder eines verschachtelten Blocks. Globale Namen hingegen sind außerhalb eines Funktionsumfangs gebunden und können von jedem Punkt im Programm aus aufgerufen werden. Um eine Variable explizit als global zu deklarieren, muss das Schlüsselwort global innerhalb des Funktionsumfangs verwendet werden.
Betrachten Sie beispielsweise den folgenden Codeausschnitt:
foo = None def bar(): foo = 'spam' print(foo)
Dieser Code löst einen UnboundLocalError aus, weil foo wird im Rahmen der Balkenfunktion gebunden. Um dies zu beheben, muss foo als globale Variable innerhalb der Funktion deklariert werden:
foo = None def bar(): global foo foo = 'spam' print(foo)
Zusammenfassung
UnboundLocalFehler treten auf, wenn auf eine lokale Variable verwiesen wird, bevor sie gebunden wird auf einen Wert. Um diese Fehler zu vermeiden, ist es wichtig, Bindungsoperationen und das Konzept globaler und lokaler Namen zu verstehen. Durch die ordnungsgemäße Verwaltung von Namensbindungen können Python-Programmierer sicherstellen, dass ihr Code ohne Fehler im Zusammenhang mit ungebundenen Namen ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWarum löst Python einen UnboundLocalError aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!