„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum löst Python einen UnboundLocalError aus?

Warum löst Python einen UnboundLocalError aus?

Veröffentlicht am 23.12.2024
Durchsuche:123

Why Does Python Throw an UnboundLocalError?

Wie UnboundLocalError auftritt: Ungebundene Namen und Variablenbindung in Python

In Python bestimmt die Variablenbindung den Umfang und die Lebensdauer von Variablen. Wenn einem Namen kein Wert zugewiesen ist, gilt er als ungebunden. Dies kann zur UnboundLocalError-Ausnahme führen.

Ungebundene lokale Variablen verstehen

Im Gegensatz zu Sprachen mit expliziten Deklarationen ermöglicht Python die Variablenzuweisung an einer beliebigen Stelle innerhalb eines Blocks. Wenn jedoch ein Name in einer Funktion verwendet wird, bevor er zugewiesen wird, wird ein UnboundLocalError ausgelöst. Dies liegt daran, dass der Compiler den Wert der Variablen nicht ermitteln kann, da diese noch nicht gebunden wurde.

Beispiel: Code, der UnboundLocalError verursacht

Bedenken Sie den folgenden Code:

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

foo()

Dieser Code führt zu einem UnboundLocalError, da die Spam-Variable in der Druckanweisung verwendet wird, ohne zuvor zugewiesen zu werden. Auch wenn die if-Anweisung eine Bedingung prüft, führt sie die Zuweisung nicht aus, sodass Spam ungebunden bleibt.

Bindungsoperationen in Python

Variablen werden durch verschiedene Operationen gebunden:

  • Zuweisung
  • für Schleifeniteration
  • Funktion Parameter
  • Importanweisungen
  • Abgefangene Ausnahmen (außer Klausel)
  • Kontextmanager (mit Anweisung)

Wenn ein Name innerhalb eines Bereichs gebunden ist B. eine Funktion, wird es zu einer lokalen Variablen. Durch die Verwendung der globalen (oder nichtlokalen in Python 3) Anweisung wird ein Name jedoch explizit als global deklariert, sodass er von außerhalb des Bereichs referenziert und geändert werden kann.

UnboundLocalError verhindern

Um UnboundLocalError zu vermeiden, stellen Sie sicher, dass Variablen ordnungsgemäß gebunden sind, bevor sie verwendet werden. Dies kann wie folgt erfolgen:

  • Variablen Werte zuweisen, bevor sie verwendet werden.
  • Verwenden der globalen Anweisung, um globale Variablen innerhalb von Funktionen zu deklarieren.
  • Vermeiden von nicht erreichbarem Code Blöcke.

Referenzen:

  • [Python-Referenzdokumentation – Benennung und Bindung](https://docs.python.org/3/ reference/introduction.html#naming-and-binding)
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3