Heim > Backend-Entwicklung > Python-Tutorial > Warum verursacht „counter = 1' innerhalb einer Python-Funktion einen „UnboundLocalError'?

Warum verursacht „counter = 1' innerhalb einer Python-Funktion einen „UnboundLocalError'?

DDD
Freigeben: 2024-12-26 09:52:14
Original
240 Leute haben es durchsucht

Why Does `counter  = 1` Inside a Python Function Cause an `UnboundLocalError`?

UnboundLocalError in Python-Closures erklärt

Die in der Frage beschriebene Situation dreht sich um ein grundlegendes Konzept in Python, das als Variablenbereich bekannt ist. Im Gegensatz zu Sprachen mit expliziten Variablendeklarationen bestimmt Python den Variablenbereich basierend auf der Zuweisung.

Beachten Sie den folgenden Code:

counter = 0

def increment():
  counter += 1

increment()
Nach dem Login kopieren

Dieser Code löst einen UnboundLocalError aus. Warum?

In Python markiert eine Zuweisung innerhalb einer Funktion die Variable als lokal für diese Funktion. Die Zeile counter = 1 in der Funktion increment() impliziert, dass counter eine lokale Variable ist. Diese Zeile versucht jedoch, auf die lokale Variable zuzugreifen, bevor sie zugewiesen wird, was zum UnboundLocalError führt.

Um dieses Problem zu umgehen, haben Sie mehrere Möglichkeiten:

  • Globales Schlüsselwort : Wenn der Zähler eine globale Variable sein soll, stellen Sie seiner Zuweisung das globale Schlüsselwort voran Funktion:
counter = 0

def increment():
  global counter
  counter += 1
Nach dem Login kopieren
  • Nichtlokales Schlüsselwort (Python 3.x): Wenn counter eine lokale Variable in einer übergeordneten Funktion und increment() eine innere Funktion ist , können Sie das Schlüsselwort nonlocal verwenden:
def outer():
  counter = 0

  def inner():
    nonlocal counter
    counter += 1
Nach dem Login kopieren

Durch die Verwendung dieser Techniken können Sie lokale und globale Variablen darin korrekt manipulieren Schließungen, um unnötige Fehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWarum verursacht „counter = 1' innerhalb einer Python-Funktion 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage