Heim >Backend-Entwicklung >Python-Tutorial >Warum wirft Python einen „UnboundLocalError' aus, wenn eine globale Variable innerhalb einer Funktion geändert wird?
Wenn Sie in Python auf einen UnboundLocalError stoßen, ist es wichtig, den Vorrang von Variablenzuweisungen gegenüber globalen Deklarationen zu verstehen. Lassen Sie uns mithilfe des bereitgestellten Codes auf die Einzelheiten eingehen:
a, b, c = (1, 2, 3) def test(): print(a) print(b) print(c) c += 1 test()
Bevor wir den Fehler untersuchen, gehen wir auf die erfolgreichen Ausdrucke von „a“ und „b“ ein. Für diese Variablen gibt es keine Zuweisung innerhalb der Funktion „test()“, daher behandelt Python sie als globale Variablen und ruft ihre Werte aus dem äußeren Bereich ab.
Allerdings, wenn innerhalb von „c“ ein Wert zugewiesen wird Mit der Funktion ('c = 1') erstellt Python eine lokale Variable mit dem Namen 'c'. Diese lokale Variable überschattet das globale „c“, und jeder nachfolgende Verweis auf „c“ innerhalb der Funktion verweist auf die lokale Version. Wenn daher die Zeile „print(c)“ ausgeführt wird, versucht sie, die nicht zugewiesene lokale Variable zu drucken, was zum „UnboundLocalError“ führt.
Um dieses Problem zu beheben, kann man die Verwendung der globalen Variablen explizit deklarieren Fügen Sie die Variable „c“ innerhalb der Funktion „test()“ hinzu, indem Sie in der ersten Zeile „global c“ hinzufügen. Alternativ kann in Python 3 „nonlocal c“ verwendet werden, um auf den nächstgelegenen umschließenden Funktionsbereich zuzugreifen, der eine Variable namens „c“ enthält.
Das obige ist der detaillierte Inhalt vonWarum wirft Python einen „UnboundLocalError' aus, wenn eine globale Variable innerhalb einer Funktion geändert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!