Heim >Backend-Entwicklung >Python-Tutorial >Warum wirft Python einen „UnboundLocalError' aus, wenn eine globale Variable innerhalb einer Funktion geändert wird?

Warum wirft Python einen „UnboundLocalError' aus, wenn eine globale Variable innerhalb einer Funktion geändert wird?

Linda Hamilton
Linda HamiltonOriginal
2024-12-24 16:47:13864Durchsuche

Why Does Python Throw an `UnboundLocalError` When Modifying a Global Variable Inside a Function?

UnboundLocalError: Variablenzuweisung hat Vorrang vor globaler Deklaration

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!

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