Generatoren sind spezielle Routinen, die in Python existieren und verwendet werden können, um Sequenzen von Ergebnissen zu erstellen, anstatt eine einmalige berechnete Reihe von Ergebnissen.
Sie sind eine Art von Iterator, den Sie in einer Schleife verwenden können, um eine Sequenz von Elementen zu erzeugen. Der Hauptunterschied zwischen Generatoren und normalen Funktionen besteht darin, dass Generatoren das Schlüsselwort `yield` anstelle von `return` verwenden.
Die `yield`-Anweisung unterbricht die Funktion und speichert ihren aktuellen Status. Wenn der Generator erneut aufgerufen wird, setzt er seine Ausführung genau dort fort, wo er aufgehört hat.
Hier ist ein einfaches Beispiel für einen Generator in Python:
```python
def simple_generator():
yield 1
yield 2
yield 3
for number in simple_generator():
print(number)
```
In diesem Beispiel druckt die for-Schleife die Werte 1, 2 und 3 nacheinander. Jedes Mal, wenn die `yield`-Anweisung aufgerufen wird, gibt der Generator den aktuellen Wert zurück und pausiert, bis er das nächste Mal aufgerufen wird.
Generatoren sind besonders nützlich für große Datensätze, da sie die Werte “on-the-fly” erzeugen und daher nicht den gesamten Datensatz im Speicher halten müssen. Dies kann zu erheblichen Speichereinsparungen führen.