Heim >Backend-Entwicklung >Python-Tutorial >Warum löst Python einen UnboundLocalError aus?
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:
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:
Referenzen:
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!