rendement Python

Comment utiliser le mot-clé Python Yield

Les générateurs ne sont pas le concept le plus intuitif dans Python. Pour aggraver les choses, ils utilisent un mot-clé spécial appelé "rendement" même si les générateurs sont eux-mêmes des fonctions. Quel est le mot clé de rendement ? Comment cela se compare-t-il à une déclaration de retour ?

Ce sont de bonnes questions. Dans ce guide, nous expliquons ce qu’est l’instruction yield et comment vous pouvez l’utiliser dans votre code. Nous parcourons un exemple du mot-clé rendement en action. C’est parti !

Nous vous recommandons de lire nos articles sur les itérateurs Python et générateurs avant de continuer. Cela vous donne un contexte utile que vous pouvez utiliser pour approfondir votre compréhension du mot-clé yield.

Retour aux bases : itérateurs et générateurs

Les listes sont décrites comme des objets itérables. En effet, vous pouvez afficher leur contenu à l’aide d’un "for‚" boucle. Chaque fois que la boucle s’exécute, Python accède à un élément de la liste. Les dictionnaires, les tuples et les chaaînes sont également des objets itérables.

Une fonction qui accède à un élément à partir d’un objet itérable s’appelle un itérateur. Créons une liste et parcourons-la à l’aide d’une boucle for :

Ce code imprime tous les piments dans les "poivrons‚" list sur la console :

Nous utilisons notre itérateur autant de fois que nous le souhaitons. Dans le dernier exemple, nous avons itéré sur les "poivrons" objet deux fois.

Les générateurs Python sont comme un itérateur utilisé pour répéter un objet. Il y a une grande différence : vous ne pouvez parcourir un générateur qu’une seule fois. Considérant que nous pouvons itérer sur "poivrons" autant de fois que nous le souhaitons, un générateur n’est accessible qu’une seule fois.

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi dans la technologie après avoir assisté à un bootcamp. Soyez associé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Définissons un générateur pour notre liste de poivrons :

Nous définissons une fonction appelée print_peppers( ). C’est notre générateur de fonction. Il accepte un argument : une liste de piments que nous voulons imprimer sur la console.

Dans notre programme principal, nous appelons la fonction print_peppers() et l’assignons à la variable pepper_generator. Ensuite, nous parcourons le générateur en utilisant un "for" boucle. Notre boucle for appelle l’objet générateur et parcourt celui-ci.

Exécutons notre code :

Le résultat est le même que notre premier exemple. La différence est que nous ne pouvons parcourir notre liste qu’une seule fois. Essayons à nouveau d’itérer sur notre générateur :

Notre code renvoie :

Nous avons parcouru notre générateur une fois. Nous ne pouvons pas le refaire. C’est pourquoi notre deuxième boucle for ne renvoie aucune valeur.

Remarquez le mot "yield‚" dans le dernier exemple. Voici un rappel :

Le "rendement‚" mot-clé apparaaît à l’intérieur de notre fonction. Il renvoie une valeur dans une fonction génératrice. C’est similaire au "return‚" mot-clé.

Utilisez rendement lorsque vous souhaitez créer un générateur sur lequel vous pouvez itérer. Dans notre dernier exemple, nous utilisons yield pour créer un générateur pour notre liste de poivrons.

Toute fonction contenant yield renverra un générateur. Nous le voyons en vérifiant le type de la variable pepper_generator à l’aide de la méthode type() :

Cela nous indique que pepper_generator, auquel est assignée la fonction print_peppers, est un générateur.

Conclusion

Le mot clé yield renvoie une valeur à l’intérieur d’un générateur. Un générateur est un type spécial d’itérateur dont les valeurs ne peuvent être itérées qu’une seule fois. Le mot clé yield est similaire à une instruction return, sauf que les instructions return ne peuvent pas être utilisées dans les générateurs.

Vous êtes maintenant prêt à utiliser le mot-clé yield comme un Pythonista !