Generatoren in Python zijn een soort iterabele, zoals lijsten of tupels. Ze stellen ons echter in staat om te bepalen hoe de volgende waarde wordt berekend in plaats van deze op te slaan.
Generatoren worden gemaakt met behulp van functies. Dit is echter anders dan een normale functie. In plaats van het keyword ‘return’ wordt het keyword ‘yield’ gebruikt. Elk ‘yield’-statement voegt een waarde toe aan de stream van resultaten uit de generator, waardoor deze vervolgens kan worden geïtereerd.
Wanneer een generator wordt geïtereerd, onthoudt het zijn status. Dus, bij het tegenkomen van een volgend ‘yield’-statement, start het de berekening van waar het laatst mee bezig was. Dit betekent dat niet alle waarden tegelijkertijd berekend hoeven te worden en in het geheugen opgeslagen, waardoor generatoren erg nuttig zijn bij het werken met grote hoeveelheden gegevens.
Zie het volgende voorbeeld:
```
def countdown(num):
print(‘Start aftellen’)
while num > 0:
yield num
num -= 1
voor i in countdown(10):
print(i)
```
In dit voorbeeld maakt de functie ‘countdown’ een generator die begint te tellen vanaf een gespecificeerd getal dat afloopt tot 1. Wanneer de generator wordt geïtereerd, genereert hij de volgende waarde in de aftelling.