Un générateur en Python est une sorte de fonction iterable qui renvoie un flux d’objets. Contrairement à une liste où tous les éléments sont stockés en mémoire, un générateur produit un élément à la fois, à la volée, ce qui permet d’économiser de la mémoire.
Les générateurs sont créés en utilisant le mot-clé “yield” au lieu de “return” dans une fonction. Lorsqu’une fonction générateur est appelée, elle renvoie un objet générateur sans même commencer l’exécution de la fonction. Lorsque la méthode “next()” est appelée pour la première fois, la fonction commence à s’exécuter jusqu’à ce qu’elle rencontre le mot-clé “yield”. La valeur spécifiée comme argument de “yield” est retournée par la méthode “next()”.
Voici un exemple simple de générateur qui génère des nombres infinis :
```
def infinies_nombres():
num = 0
while True:
yield num
num += 1
generateur = infinies_nombres()
print(next(generateur)) # sortie : 0
print(next(generateur)) # sortie : 1
print(next(generateur)) # sortie : 2
```
Dans cet exemple, la fonction `infinies_nombres` est un générateur qui commence à générer une séquence de nombres à partir de zéro et continue indéfiniment. À chaque fois que `next` est appelée, le générateur renvoie le prochain nombre dans la séquence.