Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Generatorfunktionen | Spezifikation des Funktionsrückgabewerts
Python-Funktionen-Tutorial
Abschnitt 4. Kapitel 4
single

single

Generatorfunktionen

Swipe um das Menü anzuzeigen

Note
Definition

Eine Generatorfunktion ist eine spezielle Art von Funktion, die das Schlüsselwort yield anstelle von return verwendet, um eine Sequenz von Werten zu erzeugen. Wenn eine Generatorfunktion aufgerufen wird, gibt sie ein Iterator-Objekt zurück, das durchlaufen werden kann, um die Werte einzeln abzurufen.

Der Hauptvorteil von Generatorfunktionen ist ihre Speichereffizienz. Anstatt die gesamte Sequenz im Voraus zu erzeugen und im Speicher zu speichern, erzeugen Generatoren Werte bei Bedarf.

Funktionsweise von yield

Im Gegensatz zu return, das die Funktion vollständig beendet, pausiert yield die Funktion und speichert ihren Zustand. Beim nächsten Aufruf von next() wird der Generator genau an der Stelle fortgesetzt, an der er unterbrochen wurde:

12345678910
def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3

Ein Generator kann auch mit einer for-Schleife durchlaufen werden – diese ruft automatisch next() auf, bis der Generator erschöpft ist:

1234567
def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Note
Hinweis

Sobald ein Generator erschöpft ist (keine weiteren Werte mehr zum Ausgeben), löst ein Aufruf von next() darauf einen StopIteration-Fehler aus. Eine for-Schleife behandelt dies automatisch.

Aufgabe

Wischen, um mit dem Codieren zu beginnen

Implementieren einer Generatorfunktion even_numbers, die gerade Zahlen in einem angegebenen Bereich liefert.

  1. Definition einer Generatorfunktion even_numbers mit zwei Parametern: start und stop.
  2. Verwendung einer while-Schleife, um zu iterieren, solange start kleiner oder gleich stop ist.
  3. Einsatz von yield, um start nur dann zurückzugeben, wenn es eine gerade Zahl ist (durch 2 teilbar).
  4. Inkrementieren von start um 1 nach jeder Iteration.
  5. Verwendung einer for-Schleife, um alle generierten Werte auszugeben.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

some-alt