Was ist eine Variable in Python
Eine Variable ist ein Name, der auf ein Objekt im Arbeitsspeicher verweist. In Python haben Variablen keinen festen Datentyp. Der Datentyp gehört zum Objekt, auf das die Variable verweist.
x = 42
x = "jetzt ein String"
Lokale Variablen in Python
Definition lokaler Variablen
Eine lokale Variable wird innerhalb einer Funktion definiert und ist nur innerhalb dieser Funktion verfügbar. Nach Beendigung der Funktion wird die lokale Variable aus dem Speicher gelöscht.
def say_hello():
name = "Python" # lokale Variable
print("Hallo,", name)
say_hello()
# print(name) # Fehler: name ist nicht definiert
Die Variable name existiert nur innerhalb der Funktion say_hello und ist außerhalb nicht zugänglich.
Vorteile lokaler Variablen
Lokale Variablen sorgen für Datenkapselung und verhindern ungewollte Änderungen von Werten durch andere Programmteile. Sie geben den Speicher automatisch frei, sobald die Funktion beendet ist.
Globale Variablen in Python
Was sind globale Variablen
Eine globale Variable wird außerhalb aller Funktionen deklariert und ist an jeder Stelle der Programmdatei verfügbar. Solche Variablen behalten ihre Werte während der gesamten Programmlaufzeit.
language = "Python" # globale Variable
def show():
print("Sprache:", language)
show() # Sprache: Python
Probleme beim Ändern globaler Variablen
Beim Versuch, eine globale Variable innerhalb einer Funktion zu ändern, tritt ein Fehler auf:
counter = 0
def increment():
counter += 1 # UnboundLocalError!
Python interpretiert counter aufgrund der Zuweisungsoperation als lokale Variable, obwohl sie lokal nicht definiert wurde.
Das Schlüsselwort global
Verwendung von global zum Ändern globaler Variablen
Mit dem Schlüsselwort global können Sie globale Variablen innerhalb von Funktionen ändern:
count = 0
def increment():
global count
count += 1
increment()
print(count) # 1
Anwendung von global bei mathematischen Operationen
total = 0
def add(x):
global total
total += x
add(10)
add(20)
print(total) # 30
Wann sollte man global verwenden
Das Schlüsselwort global sollte mit Vorsicht eingesetzt werden, da es das Debugging erschweren und den Code weniger lesbar machen kann.
Gültigkeitsbereich: Die LEGB-Regel
Prinzip der Variablensuche
Python sucht Variablen nach der LEGB-Regel in folgender Reihenfolge:
- L (Local) — innerhalb der aktuellen Funktion
- E (Enclosing) — in umschließenden Funktionen
- G (Global) — auf Modulebene
- B (Built-in) — eingebaute Python-Namen
Beispiel für die LEGB-Regel
x = "global"
def outer():
x = "enclosing"
def inner():
x = "local"
print(x)
inner()
outer() # local
Python findet die Variable x im lokalen Bereich und verwendet ihren Wert.
Das Schlüsselwort nonlocal
Zugriff auf Variablen in verschachtelten Funktionen
Das Schlüsselwort nonlocal wird verwendet, um auf Variablen aus einem äußeren, aber nicht globalen Gültigkeitsbereich zuzugreifen:
def outer():
count = 0
def inner():
nonlocal count
count += 1
return count
return inner
f = outer()
print(f()) # 1
print(f()) # 2
Unterschiede zwischen global und nonlocal
Das Schlüsselwort global arbeitet mit Variablen auf Modulebene, während nonlocal mit Variablen aus äußeren Funktionen innerhalb desselben Gültigkeitsbereichs arbeitet.