Python Scope: Der Scope (Gültigkeitsbereich) in Python bezieht sich auf den Bereich des Programms, in dem eine Variable definiert ist und darauf zugegriffen werden kann. Das Verständnis von Scopes ist wichtig, um zu wissen, wo Variablen existieren, wie sie verwendet werden und wann sie verfügbar sind. In Python gibt es verschiedene Arten von Scopes, darunter lokale, globale und eingebaute Scopes.
1. Lokale Variablen
Eine lokale Variable ist innerhalb einer Funktion oder eines Blocks definiert und ist nur innerhalb dieses Blocks zugänglich. Sie existiert nur während der Ausführung der Funktion.
Beispiel
def meine_funktion():
lokal_variable = "Ich bin lokal"
print(lokal_variable)
meine_funktion() # Ausgabe: Ich bin lokal
# print(lokal_variable) # Diese Zeile würde einen Fehler verursachen, da die Variable nicht definiert ist.
In diesem Beispiel ist lokal_variable
nur innerhalb von meine_funktion()
verfügbar.
2. Globale Variablen
Globale Variablen sind außerhalb aller Funktionen definiert und können von jeder Funktion im Programm verwendet werden. Sie haben einen globalen Scope.
Beispiel
globale_variable = "Ich bin global"
def andere_funktion():
print(globale_variable)
andere_funktion() # Ausgabe: Ich bin global
Hier kann die Funktion andere_funktion()
auf die globale Variable globale_variable
zugreifen.
3. Verwendung von global
Um innerhalb einer Funktion auf eine globale Variable zuzugreifen und diese zu ändern, muss die global
-Anweisung verwendet werden. Ohne global
würde Python eine neue lokale Variable erstellen.
Beispiel
globale_variable = 10
def erhöhe_variable():
global globale_variable
globale_variable += 5
erhöhe_variable()
print(globale_variable) # Ausgabe: 15
In diesem Beispiel wird die globale Variable globale_variable
innerhalb der Funktion erhöhe_variable()
verändert.
4. Eingebaute Variablen
Python hat auch einen eingebauten Scope, der eine Sammlung von Namen und Objekten enthält, die immer verfügbar sind, wie z. B. Funktionen, die in der Python-Standardbibliothek definiert sind.
Beispiel
print(len("Hallo")) # len ist eine eingebaute Funktion, die immer verfügbar ist.
5. Das LEGB-Prinzip
Python folgt dem LEGB-Prinzip, um den Scope von Variablen zu bestimmen. Die Abkürzung steht für:
- Local: Der Scope innerhalb der Funktion.
- Enclosing: Der Scope in einer umgebenden Funktion (bei verschachtelten Funktionen).
- Global: Der globale Scope.
- Built-in: Der Scope der eingebauten Namen und Funktionen.
Beispiel
x = "global"
def äußere_funktion():
x = "enclosing"
def innere_funktion():
x = "local"
print(x) # Gibt "local" aus
innere_funktion()
print(x) # Gibt "enclosing" aus
äußere_funktion()
print(x) # Gibt "global" aus
6. Verschachtelte Funktionen und Scopes
In Python können Funktionen innerhalb anderer Funktionen definiert werden. Eine innere Funktion hat Zugriff auf die Variablen der äußeren Funktion.
Beispiel
def äußere_funktion():
a = 10
def innere_funktion():
print(a) # Zugriff auf die Variable a der äußeren Funktion
innere_funktion()
äußere_funktion() # Ausgabe: 10
Häufig gestellte Fragen
Was sind lokale und globale Variablen?
Lokale Variablen sind innerhalb einer Funktion definiert und nur dort zugänglich, während globale Variablen außerhalb aller Funktionen definiert sind und von jeder Funktion im Programm verwendet werden können.
Was ist das LEGB-Prinzip?
Das LEGB-Prinzip beschreibt die Reihenfolge, in der Python nach Variablen sucht: Local, Enclosing, Global und Built-in.
Wie kann ich eine globale Variable innerhalb einer Funktion ändern?
Um eine globale Variable innerhalb einer Funktion zu ändern, muss die global
-Anweisung verwendet werden, um Python mitzuteilen, dass auf die globale Variable zugegriffen wird.