Lokale und globale Variablen in Python: Richtige Anwendung erklärt

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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.

Blogs

Buchempfehlungen