Python

Python Menu

Eine Closure ist ein Funktionsobjekt, das sich Werte in umschließenden Scopes merkt, auch wenn sie nicht im Speicher vorhanden sind. Wir wollen es Schritt für Schritt angehen

Zunächst einmal ist eine Schachtelfunktion eine Funktion, die innerhalb einer anderen Funktion definiert ist. Es ist sehr wichtig zu beachten, dass die verschachtelten Funktionen auf die Variablen des umschließenden Bereichs zugreifen können. Allerdings sind sie, zumindest in Python, nur readonly. Man kann jedoch das Schlüsselwort "nonlocal" explizit mit diesen Variablen verwenden, um sie zu verändern. Betrachte dazu das Beispiel:

def zum_raum_übertragen(nachricht): "Dies ist die umschließende Funktion" def daten_sender(): "Die verschachtelte Funktion" print(nachricht)
daten_sender()
print(zum_raum_übertragen("Test nachricht"))

Dies funktioniert gut, da die Funktion "daten_sender" auf "nachricht" zugreifen kann. Zur Demonstration der Verwendung des Schlüsselworts "nonlocal". Ohne das Schlüsselwort "nonlocal" würde die Ausgabe "3 9" lauten, mit seiner Verwendung erhalten wir jedoch "3 3", d. h. der Wert der Variablen "zahl" wird geändert.

def nachricht_ausgeben(zahl): def printer(): "Hier verwenden wir das nicht-lokale Schlüsselwort" nonlocal zahl zahl=3 print(zahl) printer() print(zahl)
nachricht_ausgeben(9)

Rückgabe des Funktionsobjekts anstelle des Aufrufs der darin verschachtelten Funktion.

def zum_raum_übertragen(nachricht): "Dies ist die umschließende Funktion" def daten_sender(): "Die verschachtelte Funktion" print(nachricht) return daten_sender
fun2 = zum_raum_übertragen("Hallo Aliens!") fun2()

Obwohl die Ausführung von "zum_raum_übertragen()" beendet wurde, blieb die Meldung vielmehr erhalten. Diese Technik, bei der die Daten auch nach dem Ende der anderen ursprünglichen Funktionen an den Code angehängt werden, wird in Python als Closures bezeichnet

Closures können die Verwendung globaler Variablen vermeiden und bieten eine Form des Versteckens von Daten (z. B. wenn es nur wenige Methoden in einer Klasse gibt, verwenden Sie stattdessen Closures).

Übung

Erstelle eine geschachtelte Schleife und eine Python-Schließung, um Funktionen zur Mehrfachmultiplikation mit Hilfe von Closures zu erhalten. Das heißt, mit Hilfe von Closures könnte man Funktionen erstellen, um multiply_with_5() oder multiply_with_4() Funktionen mit Closures zu erzeugen.

# dein Code kommt hierher
mit5multiplizieren = vielfaches_von(5) print(mit5multiplizieren(9))
def vielfaches_von(n): def multiplikator(zahl): return zahl*n return multiplikator
mit5multiplizieren = vielfaches_von(5) print(mit5multiplizieren(9))
test_output_contains("45") success_msg("Hervorragend!")

Einführung

Python Basics

Python Advance

Data Science Python Tutorials

Python Eingebaute Funktionen