Python-Generatoren 101
Python ist eine vielseitige Programmiersprache, die effizientes und effektives Codieren mit verschiedenen Funktionen, einschließlich Python-Generatoren, ermöglicht. Generatoren in Python sind Funktionen, die eine Folge von Ergebnissen anstelle eines einzelnen Werts erzeugen. Diese Wertefolge wird träge erstellt
, was bedeutet, dass der nächste Wert nur bei Bedarf generiert wird und der vorherige Wert verworfen wird, was ihn speichereffizient macht. In diesem Blog werden wir das Konzept von Generatoren im Detail untersuchen, wie man sie erstellt und wie man sie in Python-Programmen verwendet.
Was sind Python-Generatoren?
Python-Generatoren sind iterierbar, das heißt, sie können in Schleifen verwendet werden. Ein Generator wird mithilfe einer Funktion erstellt, die eine Yield-Anweisung anstelle einer Return-Anweisung enthält. Wenn wir eine Generatorfunktion aufrufen, gibt sie ein Iteratorobjekt zurück, das zum Durchlaufen der vom Generator generierten Wertefolge verwendet werden kann. Die yield-Anweisung erstellt jeden Sequenzwert und die Generatorfunktion wird angehalten, bis der nächste Wert angefordert wird.
Erstellen eines Generators in Python
Das Erstellen eines Generators in Python ist einfach. Sie müssen lediglich eine Funktion definieren, die eine yieldAnweisung enthält. Lassen Sie uns einen einfachen Generator erstellen, der eine Zahlenfolge generiert.
def number_sequence(n):
i = 0
while i < n:
yield i
i += 1
for i in number_sequence(5):
print(i)
0 1 2 3 4
Funktionsweise eines Generators in Python
Wenn eine Generatorfunktion aufgerufen wird, gibt sie ein Iteratorobjekt zurück, das zum Durchlaufen der vom Generator generierten Wertefolge verwendet werden kann. Die yieldAnweisung wird verwendet, um jeden Wert der Sequenz zu generieren, und die Generatorfunktion wird angehalten, bis der nächste Wert angefordert wird. Mal sehen, wie das funktioniert.
def number_sequence(n):
i = 0
while i < n:
yield i
i += 1
seq = number_sequence(5)
print(next(seq)) # prints 0
print(next(seq)) # prints 1
print(next(seq)) # prints 2
print(next(seq)) # prints 3
print(next(seq)) # prints 4
Output:
0
1
2
3
4
Beispiele für Python-Generatoren
Nachdem wir nun verstanden haben, was Generatoren sind und welche Vorteile sie haben, schauen wir uns einige Beispiele für Python-Generatoren an.
- Fibonacci-Sequenzgenerator:
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
def file_reader(filename):
with open(filename, 'r') as file:
for line in file:
yield line
3. Zählergenerator:
def counter(start=0, step=1):
n = start
while True:
yield n
n += step
Vorteile der Verwendung von Python-Generatoren
Die Verwendung von Python-Generatoren bietet mehrere Vorteile gegenüber anderen Methoden zum Generieren von Wertefolgen.
- Speichereffizient: Generatoren sind speichereffizient, da sie Werte im laufenden Betrieb generieren, anstatt sie im Speicher zu generieren und zu speichern.
- Effiziente Berechnung: Generatoren sind auch recheneffizient, da sie nur die erforderlichen Werte erzeugen. Dadurch sind sie schneller und effizienter als andere Methoden zur Generierung von Sequenzen.
- Unendliche Folgen: Generatoren können auch unendliche Folgen von Werten erzeugen, was mit anderen Methoden zur Erzeugung von Folgen nicht möglich ist.
- Lazy Evaluation: Generatoren verwenden Lazy Evaluation, was bedeutet, dass sie einen Ausdruck nur bei Bedarf auswerten, was eine effiziente Ressourcennutzung ermöglicht.
- Möglichkeit zur Verkettung von Iteratoren: Generatoren können miteinander verkettet werden, um komplexe Wertesequenzen zu erstellen, was eine flexible Generierung von Sequenzen ermöglicht.
- Zustandsbehaftet: Generatoren helfen dabei, den Zustand zwischen Aufrufen aufrechtzuerhalten und ermöglichen so die Generierung komplexer Sequenzen mit minimalem Aufwand.
- Boilerplate-Code reduzieren : Generatoren können den Boilerplate-Code reduzieren, der zum Generieren von Sequenzwerten erforderlich ist, wodurch der Code einfacher zu lesen und zu warten ist.
Python-Generatoren sind leistungsstarke Werkzeuge, die effizient und langsam Wertesequenzen generieren können. Generatoren sind speichereffizient, recheneffizient und einfach zu verwenden. Sie können unendlich viele Abfolgen von Geschäften generieren und zu komplexen Vereinbarungen verkettet werden. Generatoren sind ein zentraler Bestandteil der Python-Sprache und werden in vielen Python-Bibliotheken und Frameworks häufig verwendet. Die Verwendung von Generatoren in Ihrem Code kann die Lesbarkeit und Wartbarkeit Ihres Codes verbessern und gilt als pythonisch.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































