Une fonction génératrice est différente d'une fonction normale en ce sens qu'elle utilise l'instruction "yield" au lieu du traditionnel "return". Cela offre des avantages uniques et une flexibilité accru dans la programmation.
L'instruction "yield" est utilisée dans les fonctions génératrices pour remplacer l'utilisation traditionnelle de "return". Lorsque cette instruction est rencontrée, la fonction génératrice produit une valeur et gèle son exécution. Contrairement à "return", la prochaine fois que la fonction est appelée, elle reprend son exécution à l'endroit où elle a été interrompue, en gardant tous ses états locaux.
Voici un exemple simple de fonction génératrice en Python :
def simple_generator():
yield 1
yield 2
yield 3
for value in simple_generator():
print(value)
Cet exemple imprimera successivement les nombres 1, 2 et 3.
L'un des principaux avantages des fonctions génératrices est qu'elles permettent une consommation mémoire significativement réduite lors de l'itération sur une grande séquence de valeurs.
On peut également créer des générateurs infinis qui produisent des valeurs à la demande. Ces valeurs sont créées à la volée, permettant ainsi de gagner en efficacité et en performance.
Les fonctions génératrices et l'instruction 'yield' offrent une plus grande flexibilité et une meilleure efficacité en termes de performance et de gestion de la mémoire. Cependant, il est important de noter qu'elles ne sont pas toujours plus rapides que les fonctions normales, et qu'il est essentiel de comprendre comment et quand les utiliser pour en tirer le meilleur parti.