Les générateurs en Python sont un type d’itérateur, qui permet de générer une séquence d’éléments. Contrairement aux listes ou aux tuples, les générateurs ne stockent pas tous les éléments en mémoire, mais génèrent un élément à la fois, à la volée. Cela les rend plus efficaces en termes de mémoire pour les grandes séquences.
Un générateur est défini comme une fonction normale, mais au lieu d’utiliser le mot-clé ‘return’, il utilise ‘yield’.
Voici un exemple simple d’un générateur :
```
def simple_generator():
yield 1
yield 2
yield 3
Lorsque le mot clé `yield` est rencontré, Python produit un élément et suspend l’exécution de la fonction. La prochaine fois que le générateur est appelé (dans la boucle ‘for’ par exemple), Python reprend là où il s’était arrêté et produit le prochain élément, et ainsi de suite jusqu’à la fin du générateur.
Les générateurs sont particulièrement utiles lorsque vous travaillez avec de très grandes séquences d’éléments que vous ne voulez pas ou ne pouvez pas stocker en mémoire, ou lorsqu’il est coûteux de calculer chaque élément et que vous préférez le faire “à la demande”.