Générateurs Python — écrivez du code super efficace !

Jan 19 2023
Les générateurs Python sont un type spécial de fonction qui vous permet d'itérer sur une séquence de valeurs, sans avoir à stocker la séquence entière en mémoire. Ils constituent un outil puissant pour travailler avec de grands ensembles de données ou pour générer des séquences infinies de valeurs.

Les générateurs Python sont un type spécial de fonction qui vous permet d'itérer sur une séquence de valeurs, sans avoir à stocker la séquence entière en mémoire. Ils constituent un outil puissant pour travailler avec de grands ensembles de données ou pour générer des séquences infinies de valeurs.

Qu'est-ce qui est différent d'une fonction normale ?

Une fonction génératrice est définie comme une fonction normale, mais au lieu d'utiliser le mot-clé return, elle utilise le mot-clé yield . Lorsqu'une fonction génératrice est appelée, elle renvoie un objet itérateur, qui peut être utilisé pour parcourir les valeurs générées par la fonction.

Pourquoi utiliser des générateurs ?

L'un des principaux avantages des générateurs est qu'ils sont économes en mémoire. Parce qu'ils ne génèrent qu'une seule valeur à la fois, ils peuvent gérer de grands ensembles de données ou des séquences infinies sans consommer beaucoup de mémoire.

Un autre avantage des générateurs est qu'ils sont paresseux. Cela signifie qu'ils ne génèrent que les valeurs nécessaires, plutôt que de générer toutes les valeurs à l'avance. Cela peut être utile pour travailler avec de grands ensembles de données ou pour générer des séquences infinies.

Ok.. comment l'utiliser?

La fonction génératrice suivante génère la suite de Fibonacci :

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

fib = fibonacci()
print(next(fib)) # 0
print(next(fib)) # 1
print(next(fib)) # 1
print(next(fib)) # 2

for number in fibonacci():
    if number > 100:
        break
    print(number)

Les générateurs peuvent également être utilisés en combinaison avec d'autres fonctionnalités Python, telles que les listes de compréhension ou le module itertools, pour créer un code puissant et expressif. Vous pouvez l'essayer vous-même !

Bonne chance Shilo