Heim > Backend-Entwicklung > Python-Tutorial > Warum löst Python einen UnboundLocalError aus?

Warum löst Python einen UnboundLocalError aus?

Mary-Kate Olsen
Freigeben: 2024-12-24 13:08:16
Original
646 Leute haben es durchsucht

Why Does Python Raise an UnboundLocalError?

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)
Nach dem Login kopieren

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:

  • Zuweisung
  • Funktionsparameter
  • für Schleifennamen
  • Ausnahmehandler
  • Kontextmanagernamen

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage