Syntaxe
Paramètres
Nom |
Description |
expression_list |
Ce paramètre optionnel permet d'indiquer la valeur a retourner |
Description
Ce mot réservé permet d'indiquer, quand la fonction est généré, qu'il utilise seulement le corps de la fonction généré.
Remarques
- Le mot clef yield transforme une fonction en générateur : Au lieu de retourner une valeur une fois comme avec return, yield permet
de produire une série de valeurs au fil du temps. Cela rend les fonctions plus efficaces pour traiter de grandes quantités de données ou des flux continus.
- Une fonction contenant yield ne retourne pas une valeur mais un itérateur : Cet itérateur peut être parcouru à l'aide d'une boucle for, car il suit
le protocole d'itération Python. Chaque appel à next() sur le générateur exécute la fonction jusqu'à la prochaine instruction yield.
- Contrairement à return, yield suspend l'exécution de la fonction : L'état de la fonction (variables locales, position d'exécution,...) est
sauvegardé automatiquement. Cela permet de reprendre l'exécution exactement là où elle avait été interrompue.
- yield est idéal pour travailler avec des séquences longues ou infinies : Il permet de générer les éléments un par un à la demande, ce qui limite
l'utilisation de la mémoire. Cela convient parfaitement aux pipelines de traitement, aux générateurs de nombres ou aux parcours récursifs.
- On peut utiliser yield avec ou sans une valeur à renvoyer : Si aucune expression n'est fournie après yield, l'instruction retourne None. Cela peut
être utile pour signaler simplement une pause dans le flux sans produire de donnée.
- Une fonction génératrice peut contenir plusieurs instructions yield : Chaque yield définit un point de sortie temporaire dans la fonction.
Cela permet une logique complexe dans un même générateur.
- yield peut être combiné avec une logique conditionnelle : Par exemple, on peut utiliser if ou
while pour ne produire certaines valeurs qu'en fonction de critères spécifiques. Cela permet de filtrer ou d'adapter dynamiquement le
contenu généré.
- La différence entre yield et return est fondamentale en Python : Tandis que return
termine définitivement la fonction, yield marque une pause et conserve l'état pour la reprise. L'usage de l'un ou de l'autre dépend du comportement souhaité :
unique résultat ou flux continu de données.
Dernière mise à jour : Mercredi, le 16 mai 2018