Grundlagen zu Python-Generatoren
Python-Generatoren (Generatoren) sind eine spezielle Art von Funktion, mit der Sie Iteratoren erstellen können. Im Gegensatz zu normalen Funktionen, die einen Wert zurückgeben und dann beendet werden, können Generatoren angehalten und fortgesetzt werden, sodass sie im Laufe der Zeit eine Folge von Werten erzeugen können.
Generatoren sind besonders nützlich, wenn Sie mit großen oder unendlichen Datensätzen arbeiten, da sie die Werte einzeln erzeugen können, anstatt den gesamten Datensatz auf einmal zu generieren und im Speicher zu speichern.
Der Hauptunterschied zwischen einem Generator und einer normalen Funktion ist die Verwendung des Schlüsselworts yield
anstelle des Schlüsselworts return
. Wenn eine Generatorfunktion aufgerufen wird, gibt sie ein Generatorobjekt zurück, über das Sie dann iterieren können, um die von der Funktion erzeugten Werte abzurufen.
Hier ist ein einfaches Beispiel für eine Generatorfunktion, die die ersten n
Fibonacci-Zahlen erzeugt:
def fibonacci(n):
a, b = 0, 1
for i in range(n):
yield a
a, b = b, a + b
In diesem Beispiel ist die fibonacci()
-Funktion eine Generatorfunktion, die das Schlüsselwort yield
verwendet, um jede Fibonacci-Zahl zurückzugeben, anstatt die gesamte Sequenz auf einmal zurückzugeben.
Um diesen Generator zu verwenden, können Sie eine Instanz der fibonacci()
-Funktion erstellen und dann über die von ihr erzeugten Werte iterieren:
fib = fibonacci(10)
for num in fib:
print(num)
Dies gibt die ersten 10 Fibonacci-Zahlen aus:
0
1
1
2
3
5
8
13
21
34
Generatoren können auch in einer Vielzahl anderer Anwendungen verwendet werden, wie z. B. bei der Verarbeitung großer Datensätze, der Implementierung von Koroutinen (Coroutines) und der Erstellung benutzerdefinierter Datenstrukturen.