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

Warum löst Python einen UnboundLocalError aus?

Linda Hamilton
Linda HamiltonOriginal
2024-12-05 21:23:11241Durchsuche

Why Does Python Throw an UnboundLocalError?

Wie UnboundLocalError auftritt: Ungebundene Namen und Variablenbindung in Python

In Python bestimmt die Variablenbindung den Umfang und die Lebensdauer von Variablen. Wenn einem Namen kein Wert zugewiesen ist, gilt er als ungebunden. Dies kann zur UnboundLocalError-Ausnahme führen.

Ungebundene lokale Variablen verstehen

Im Gegensatz zu Sprachen mit expliziten Deklarationen ermöglicht Python die Variablenzuweisung an einer beliebigen Stelle innerhalb eines Blocks. Wenn jedoch ein Name in einer Funktion verwendet wird, bevor er zugewiesen wird, wird ein UnboundLocalError ausgelöst. Dies liegt daran, dass der Compiler den Wert der Variablen nicht ermitteln kann, da sie noch nicht gebunden wurde.

Beispiel: Code, der UnboundLocalError verursacht

Bedenken Sie den folgenden Code:

def foo():
    if False:
        spam = 'eggs'
    print(spam)

foo()

Dieser Code führt zu einem UnboundLocalError, da die Spam-Variable in der Druckanweisung verwendet wird ohne vorherige Zuordnung. Obwohl die if-Anweisung eine Bedingung prüft, führt sie die Zuweisung nicht aus, sodass Spam ungebunden bleibt.

Bindungsoperationen in Python

Variablen werden durch verschiedene Operationen gebunden:

  • Aufgabe
  • for-Schleife Iteration
  • Funktionsparameter
  • Anweisungen importieren
  • Abgefangene Ausnahmen (außer Klausel)
  • Kontextmanager (mit Anweisung)

Wenn ein Name innerhalb eines Bereichs, beispielsweise einer Funktion, gebunden ist, wird er zu einer lokalen Variablen. Durch die Verwendung der globalen (oder nichtlokalen in Python 3) Anweisung wird ein Name jedoch explizit als global deklariert, sodass er von außerhalb des Bereichs referenziert und geändert werden kann.

UnboundLocalError verhindern

Um UnboundLocalError zu vermeiden, stellen Sie sicher, dass Variablen ordnungsgemäß gebunden sind, bevor sie verwendet werden. Dies kann erreicht werden durch:

  • Variablen Werte zuweisen, bevor sie verwendet werden.
  • Verwendung der globalen Anweisung, um globale Variablen innerhalb von Funktionen zu deklarieren.
  • Vermeidung von nicht erreichbarem Code Blöcke.

Referenzen:

  • [Python-Referenzdokumentation – Benennung und Bindung](https://docs.python.org/3/ reference/introduction.html#naming-and-binding)

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!

Stellungnahme:
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