Python 3: Den UnboundLocalError und seine Lösung verstehen
Wenn der UnboundLocalError in Python 3 auftritt, zeigt dies an, dass auf eine lokale Variable verwiesen wird vor seiner Zuweisung innerhalb einer Funktion. Lassen Sie uns die Ursache und eine wirksame Lösung für dieses Problem untersuchen.
Um den Fehler zu veranschaulichen, betrachten Sie den folgenden Codeausschnitt:
Var1 = 1 Var2 = 0 def function(): if Var2 == 0 and Var1 > 0: print("Result 1") elif Var2 == 1 and Var1 > 0: print("Result 2") elif Var1 < 1: print("Result 3") Var1 -= 1 function()
In diesem Code wird eine globale Variable Var1 definiert und einen Wert von 1 zugewiesen. Innerhalb der Funktion wird auf die Variable Var1 verwiesen, bevor sie in der bedingten Anweisung und der Operation Var1 -= 1 zugewiesen wird. Dies führt zum UnboundLocalError weil Python die Operation -= als Zuweisung innerhalb der Funktion interpretiert und eine lokale Variable mit demselben Namen wie die globale erstellt.
Um dieses Problem zu lösen, wird generell von der Verwendung globaler Variablen abgeraten. Bei Bedarf können Sie jedoch explizit eine globale Variable innerhalb der Funktion deklarieren, indem Sie am Anfang das Schlüsselwort global verwenden, wie im folgenden Code dargestellt:
def function(): global Var1, Var2 ...
Durch das Einfügen dieser Zeile weisen Sie Python an, nachzuschauen Erstellen Sie alle Verweise auf Var1 und Var2 im globalen Bereich, um den UnboundLocalError aufzulösen und Ihnen den Zugriff auf die globalen Variablen innerhalb der Funktion zu ermöglichen.
Es ist wichtig zu beachten, dass globale Variablen verwendet werden sollten auf notwendige Situationen beschränkt werden, da sie zu Verwirrung und Problemen bei der Codepflege führen können. Python bietet mehrere Mechanismen, wie zum Beispiel die in Python 3 eingeführte nichtlokale Anweisung, um Variablenbereiche effektiv zu verwalten und UnboundLocalErrors zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Python 3 einen UnboundLocalError und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!