Heim >Backend-Entwicklung >Python-Tutorial >Warum löst Python einen „UnboundLocalError' aus und wie kann ich ihn beheben?

Warum löst Python einen „UnboundLocalError' aus und wie kann ich ihn beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-25 07:37:211052Durchsuche

Why Does Python Throw an

Fehler: „UnboundLocalError: lokale Variable, auf die vor der Zuweisung verwiesen wird“ in Python

Wenn dieser Fehler auftritt, liegt das daran, dass Sie es versuchen Auf eine lokale Variable zugreifen, bevor sie initialisiert oder definiert wurde. Sehen wir uns den Code an, der dieses Problem verursacht:

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()

Dieser Code definiert zwei Variablen, Var1 und Var2, außerhalb der Funktion function(). Innerhalb der Funktion versuchen wir, Var1 zu manipulieren, was in Ordnung ist. Das Problem entsteht jedoch, wenn wir auf Var1 zugreifen, ohne es innerhalb des Funktionsumfangs zu initialisieren.

Lösung mit globalen Variablen:

Um dieses Problem zu beheben, können wir Var1 als deklarieren eine globale Variable innerhalb der Funktion. Dies weist Python an, die außerhalb der Funktion definierte Variable Var1 zu verwenden, anstatt darin eine neue lokale Variable zu erstellen. Um dies zu erreichen, fügen Sie am Anfang der Funktion die folgende Zeile hinzu:

global Var1

Alternative Lösung: Verwenden Sie nichtlokale Variablen:

Python 3 führt die nichtlokale Anweisung ein, Damit können Sie eine Variable ändern, die in einem umschließenden Bereich definiert ist. Anstatt Var1 als globale Variable zu deklarieren, können wir den folgenden Code innerhalb der Funktion verwenden:

nonlocal Var1
Var1 -= 1

Schlussfolgerung:

UnboundLocalError tritt auf, wenn Sie versuchen, auf a zu verweisen Lokale Variable, die nicht initialisiert oder definiert wurde. Um dies zu beheben, können Sie die Variable entweder als global deklarieren oder das Schlüsselwort nonlocal verwenden, um auf die Variable zuzugreifen, die in einem umschließenden Bereich definiert ist.

Das obige ist der detaillierte Inhalt vonWarum löst Python einen „UnboundLocalError' aus und wie kann ich ihn beheben?. 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