Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Gültigkeitsbereich von Lokalen, Globalen und Nichtlokalen Variablen | Variablenbereich, Verschachtelte Funktionen und Closures
Funktionale Programmierkonzepte in Python

bookGültigkeitsbereich von Lokalen, Globalen und Nichtlokalen Variablen

Swipe um das Menü anzuzeigen

Das Verständnis darüber, wie Python den Gültigkeitsbereich von Variablen bestimmt, ist entscheidend für das Schreiben von klarem und fehlerfreiem Code. Python verwendet eine bestimmte Regel, bekannt als die LEGB-Regel, um zu entscheiden, wo nach dem Wert einer Variablen gesucht wird. LEGB steht für Local, Enclosing, Global und Built-in. Wenn auf eine Variable zugegriffen wird, sucht Python ihren Wert in folgender Reihenfolge:

  • Local: Variablen, die innerhalb der aktuellen Funktion oder Methode definiert sind;
  • Enclosing: Variablen im nächstgelegenen umschließenden Funktionsbereich (bei verschachtelten Funktionen);
  • Global: Variablen, die auf Modulebene definiert oder mit dem Schlüsselwort global deklariert wurden;
  • Built-in: Namen, die in Python vordefiniert sind, wie len oder range.

Diese Regel ermöglicht es Python, Variablennamen effizient aufzulösen, und hilft dabei vorherzusagen, woher der Wert einer Variablen stammt. Manchmal besteht der Wunsch, Variablen außerhalb des aktuellen Funktionsbereichs zu ändern. Python stellt dafür zwei Schlüsselwörter zur Verfügung: global und nonlocal. Mit dem Schlüsselwort global kann einer Variablen auf Modulebene ein Wert zugewiesen werden, während nonlocal die Änderung einer Variablen im nächstgelegenen umschließenden Funktionsbereich erlaubt, der nicht global ist.

123456789101112131415161718
# Global scope global_var = "I am global" def outer(): # Enclosing scope enclosing_var = "I am enclosing" def inner(): # Local scope local_var = "I am local" print("Local:", local_var) print("Enclosing:", enclosing_var) # Found in enclosing scope print("Global:", global_var) # Found in global scope print("Built-in:", len([1, 2, 3])) # 'len' comes from built-in scope inner() outer()
copy
  • Die Variable global_var ist im globalen Gültigkeitsbereich definiert und von überall im Modul aus zugänglich;
  • Innerhalb der Funktion outer erzeugt enclosing_var eine Variable im umschließenden Gültigkeitsbereich, auf die von verschachtelten Funktionen zugegriffen werden kann;
  • Die verschachtelte Funktion inner definiert local_var, die nur innerhalb dieser Funktion existiert und den Zugriff auf Variablen aus allen umschließenden Gültigkeitsbereichen demonstriert;
  • Die Funktion len wird verwendet, um zu zeigen, wie Python Namen aus dem eingebauten Gültigkeitsbereich zugreifen kann.

Dies zeigt, wie Python Variablenwerte findet, indem es in der Reihenfolge lokal, umschließend, global und eingebaut sucht, was die Variablenauflösung vorhersehbar und organisiert macht.

1. Was bewirkt das Schlüsselwort nonlocal in Python?

2. Was ist die LEGB-Regel?

question mark

Was bewirkt das Schlüsselwort nonlocal in Python?

Wählen Sie die richtige Antwort aus

question mark

Was ist die LEGB-Regel?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 1
some-alt