Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Abschlüsse | Variablenbereich, Verschachtelte Funktionen und Closures
Funktionale Programmierkonzepte in Python

bookAbschlüsse

Swipe um das Menü anzuzeigen

Closures vs. Verschachtelte Funktionen

Eine verschachtelte Funktion ist jede Funktion, die innerhalb einer anderen Funktion definiert wird. Verschachtelte Funktionen sind nützlich, um Code zu organisieren und den Geltungsbereich von Hilfsfunktionen einzuschränken. Allerdings sind nicht alle verschachtelten Funktionen Closures.

Eine Closure ist eine besondere Art von verschachtelter Funktion. Closures sind verschachtelte Funktionen, die sich Variablen aus dem Geltungsbereich der umschließenden Funktion "merken" und auf diese zugreifen können, selbst nachdem die äußere Funktion bereits beendet wurde. Das bedeutet, dass Closures ihren Zustand über mehrere Aufrufe hinweg beibehalten können.

Wichtige Punkte:

  • Alle Closures sind verschachtelte Funktionen;
  • Nicht alle verschachtelten Funktionen sind Closures;
  • Eine verschachtelte Funktion wird nur dann zu einer Closure, wenn sie Variablen aus dem Geltungsbereich der äußeren Funktion verwendet und diese Variablen nach dem Beenden der äußeren Funktion weiterhin zugänglich sind.

Diese Unterscheidung ist wichtig, um zu verstehen, wie Python den Geltungsbereich von Variablen verwaltet und wie Closures verwendet werden können, um Zustand und Verhalten gemeinsam zu kapseln.

12345678910
def make_greeter(name): def greet(): return f"Hello, {name}!" return greet greeter = make_greeter("Alice") print(greeter()) another_greeter = make_greeter("Bob") print(another_greeter())
copy

Wenn make_greeter("Alice") aufgerufen wird, erstellt Python eine neue Funktion greet, die sich den Wert von name als "Alice" merkt. Auch nachdem make_greeter beendet ist, hat die zurückgegebene Funktion greet weiterhin Zugriff auf die Variable name aus ihrem ursprünglichen Geltungsbereich. Deshalb gibt der Aufruf von greeter() Hello, Alice! aus und der Aufruf von another_greeter() Hello, Bob!. Jede Closure behält ihre eigene Kopie der benötigten Variablen.

question mark

Was macht eine Funktion zu einem Closure?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 8

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 8
some-alt