Funktionen und Gültigkeitsbereiche (Scope)

You are here:

In diesem Kapitel werden wir den Scope von Variablen in Python und die Verwendung von globalen und lokalen Variablen in Funktionen untersuchen. Das Verständnis von Scopes ist wichtig, um unerwartete Nebeneffekte in deinem Code zu vermeiden. Lass uns anfangen!

Lokale Variablen

Lokale Variablen sind solche, die innerhalb einer Funktion definiert und nur in dieser Funktion verwendet werden können. Sie sind nicht für andere Funktionen oder den globalen Scope zugänglich. Hier ist ein Beispiel:

def meine_funktion():
    lokal_var = "Ich bin lokal!"
    print(lokal_var)
meine_funktion()  # Ausgabe: Ich bin lokal!
print(lokal_var)  # Fehler: NameError

Wenn du versuchst, auf eine lokale Variable außerhalb ihrer Funktion zuzugreifen, wird Python einen `NameError` ausgeben.

Globale Variablen

Globale Variablen sind solche, die außerhalb einer Funktion definiert sind und im gesamten Skript verwendet werden können. Hier ist ein Beispiel:

global_var = "Ich bin global!"
def meine_funktion():
    print(global_var)
meine_funktion()  # Ausgabe: Ich bin global!
print(global_var)  # Ausgabe: Ich bin global!

In diesem Beispiel haben wir sowohl innerhalb als auch außerhalb der Funktion Zugriff auf die globale Variable.

Das `global` Schlüsselwort

Wenn du eine globale Variable innerhalb einer Funktion ändern möchtest, musst du das `global` Schlüsselwort verwenden, um Python mitzuteilen, dass du auf die globale Variable und nicht auf eine lokale Variable zugreifen möchtest. Hier ist ein Beispiel:

global_var = 10
def meine_funktion():
    global global_var
    global_var = 20
    print(global_var)
meine_funktion()  # Ausgabe: 20
print(global_var)  # Ausgabe: 20

Das `nonlocal` Schlüsselwort

Das `nonlocal` Schlüsselwort wird verwendet, um auf eine Variable in einem äußeren, aber nicht globalen, Scope zuzugreifen. Dies ist besonders nützlich, wenn du verschachtelte Funktionen verwendest. Hier ist ein Beispiel:

def äußere_funktion():
    äußer_var = 10
    def innere_funktion():
        nonlocal äußer_var
        äußer_var = 20
        print(äußer_var)
    innere_funktion()  # Ausgabe: 20
    print(äußer_var)   # Ausgabe: 20
äußere_funktion()

In diesem Beispiel haben wir das `nonlocal` Schlüsselwort verwendet, um auf die Variable `äußer_var` aus dem äußeren Scope zuzugreifen und sie zu ändern.

Das waren die grundlegenden Konzepte rund um den Scope von Variablen in Python. Im nächsten Kapitel werden wir uns mit fortgeschrittenen Funktionstechniken wie Lambda-Funktionen, Funktionen als Argumente und der Verwendung von Funktionen in List Comprehensions beschäftigen.