Gü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
globaldeklariert wurden; - Built-in: Namen, die in Python vordefiniert sind, wie
lenoderrange.
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()
- Die Variable
global_varist im globalen Gültigkeitsbereich definiert und von überall im Modul aus zugänglich; - Innerhalb der Funktion
outererzeugtenclosing_vareine Variable im umschließenden Gültigkeitsbereich, auf die von verschachtelten Funktionen zugegriffen werden kann; - Die verschachtelte Funktion
innerdefiniertlocal_var, die nur innerhalb dieser Funktion existiert und den Zugriff auf Variablen aus allen umschließenden Gültigkeitsbereichen demonstriert; - Die Funktion
lenwird 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?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen