Heim > Backend-Entwicklung > Python-Tutorial > Warum erhalte ich in Python einen UnboundLocalError?

Warum erhalte ich in Python einen UnboundLocalError?

Linda Hamilton
Freigeben: 2024-12-05 22:20:17
Original
526 Leute haben es durchsucht

Why Do I Get an UnboundLocalError in Python?

UnboundLocalError: Ungebundene Variablen in Python verstehen

In Python tritt ein UnboundLocalError auf, wenn auf eine lokale Variable verwiesen wird, bevor ihr ein Wert zugewiesen wurde. Im Gegensatz zu anderen Programmiersprachen erfordert Python keine expliziten Variablendeklarationen. Stattdessen sind Variablen bei der Zuweisung an Werte gebunden.

Eine Möglichkeit, einen UnboundLocalError auszulösen, besteht darin, auf eine nicht zugewiesene Variable zuzugreifen:

>>> foobar
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foobar' is not defined
Nach dem Login kopieren

Eine andere Möglichkeit besteht darin, dass eine Zuweisungsoperation nicht ausgeführt werden kann, z wie innerhalb eines bedingten Blocks:

def foo():
    if False:
        spam = 'eggs'
    print(spam)

>>> foo()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in foo
UnboundLocalError: local variable 'spam' referenced before assignment
Nach dem Login kopieren

In Python werden Namen durch verschiedene Operationen an Werte gebunden: Zuweisung, Funktionsparameter, Importanweisungen, Ausnahmehandler und Kontextmanager. Wenn ein Name in einen Funktionsbereich gebunden ist, wird er zu einer lokalen Variablen. Um auf eine globale Variable innerhalb einer Funktion zuzugreifen, muss eine globale oder nicht lokale Anweisung verwendet werden (in Python 3).

Zum Beispiel versucht die folgende Funktion, auf eine globale Variable foo zuzugreifen, schlägt jedoch fehl, weil sie innerhalb der Funktion gebunden ist Geltungsbereich:

foo = None
def bar():
    if False:
        foo = 'spam'
    print(foo)

>>> bar()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in bar
UnboundLocalError: local variable 'foo' referenced before assignment
Nach dem Login kopieren

Die Verwendung von global foo behebt jedoch das Problem:

foo = None
def bar():
    global foo
    if False:
        foo = 'spam'
    print(foo)

>>> bar()
None
Nach dem Login kopieren

Das Konzept der Variablenbindung ist zu verstehen entscheidend, um UnboundLocalErrors in Python zu vermeiden.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Python einen UnboundLocalError?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage