Ungebundener lokaler Fehler: Lokale Variable „c“ überschattet globalen Geltungsbereich
In Python ist das Verständnis der Zuweisungsregeln für Variablen innerhalb von Funktionen von entscheidender Bedeutung mögliche Fehler verhindern. Bei einem „UnboundLocalError“ ist es wichtig zu untersuchen, ob eine in einer Funktion zugewiesene Variable versucht, eine globale Variable zu überschatten.
Berücksichtigen Sie den folgenden Code:
a, b, c = (1, 2, 3) def test(): print(a) print(b) print(c) c += 1
Beim Ausführen dieses Codes , werden Sie auf einen Fehler stoßen, der von der Zeile „print(c)“ herrührt. Die Fehlermeldung weist normalerweise darauf hin, dass im lokalen Bereich der test()-Funktion keine „c“-Variable zugewiesen ist.
Um diesen Fehler zu beheben, müssen Sie verstehen, dass Python Variablen in Funktionen je nach Position unterschiedlich behandelt sie werden zugewiesen. Wenn Sie versuchen, einer Variablen innerhalb einer Funktion einen Wert zuzuweisen, wird diese zu einer lokalen Variablen. In diesem Code möchten Sie jedoch, dass „c“ global bleibt.
Um zu deklarieren, dass die Variable „c“ in der test()-Funktion auf die globale Variable „c“ verweist, müssen Sie explizit die Variable „c“ verwenden. Schlüsselwort „global“ am Anfang der Funktion:
def test(): global c print(a) print(b) print(c) c += 1
Durch das Hinzufügen von „global c“ erkennt Python, dass Sie beabsichtigen, mit der globalen Variablen „c“ und nicht mit einer lokalen zu arbeiten. Dadurch können Sie die globale „c“-Variable wie erwartet drucken und ändern.
Als neuere Funktion, die in Python 3 eingeführt wurde, können Sie „nonlocal c“ anstelle von „global c“ verwenden, um auf die nächstgelegene Einschließung zu verweisen Funktionsumfang, der eine „c“-Variable besitzt. Es ist jedoch erwähnenswert, dass die Verwendung von „nonlocal“ im alltäglichen Python-Codieren im Allgemeinen weniger verbreitet ist.
Das obige ist der detaillierte Inhalt vonWarum löst mein Python-Code beim Zugriff auf eine globale Variable innerhalb einer Funktion einen „UnboundLocalError' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!