Aller au contenu principal

3 formations sont désormais disponibles : Python, Flask et JS.

Aller au contenu principal

Imagine tu dois traiter 1 milliard de lignes d'un fichier. Si tu fais lignes = fichier.readlines(), tu charges TOUT en mémoire. Ton PC explose (Memory Error).

La solution : Les Générateurs. Au lieu de renvoyer toute la liste (return), la fonction renvoie un élément à la fois (yield) et se met en pause.

def generateur_infini():
    n = 0
    while True:
        yield n
        n += 1

gen = generateur_infini()

print(next(gen)) # 0
print(next(gen)) # 1
# Et ainsi de suite...

C'est ce que fait range(). Il ne crée pas une liste de 1 million de nombres en mémoire. Il te les donne un par un quand tu demandes.

Le mot-clé yield

Dès que Python voit yield dans une fonction, il sait que c'est un générateur.