Maison >développement back-end >Tutoriel Python >Que fait le mot-clé « rendement » de Python et comment les générateurs sont-ils utilisés ?

Que fait le mot-clé « rendement » de Python et comment les générateurs sont-ils utilisés ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 17:11:11596parcourir

What Does Python's `yield` Keyword Do and How Are Generators Used?

Que fait exactement "yield" en Python ?

"yield" est un mot-clé unique en Python qui vous permet de créer des générateurs, qui sont un type spécialisé d'itérable. Les itérables représentent des séquences de valeurs sur lesquelles vous pouvez parcourir, telles que des listes et des chaînes. Cependant, les générateurs diffèrent de ceux-ci en ne stockant pas toutes les valeurs en mémoire. Au lieu de cela, ils produisent des valeurs à la volée, une à la fois.

Pour comprendre les générateurs, il est utile de commencer par des itérables. Les itérables sont des objets qui implémentent la méthode __iter__(), vous permettant de récupérer un objet itérateur via la fonction iter(). Les itérateurs implémentent la méthode __next__(), qui renvoie l'élément suivant dans la séquence et déclenche une exception StopIteration lorsqu'il ne reste plus d'éléments.

Les générateurs et le rôle du « rendement »

Les générateurs sont un type d'itérable créé à l'aide du mot-clé "yield". Les générateurs sont uniques car ils suspendent l'exécution à chaque instruction « rendement », vous permettant de récupérer une valeur à la fois. Lorsque vous utilisez le générateur, il reprend l'exécution là où elle s'était arrêtée, générant la valeur suivante. Ce processus se poursuit jusqu'à ce que le générateur ait épuisé toutes ses valeurs, auquel cas il lève une exception StopIteration.

Comment utiliser les générateurs

Pour utiliser des générateurs, vous créez une fonction de générateur qui contient un ou plus de déclarations de « rendement ». Cette fonction renvoie un objet générateur, qui peut être itéré à l'aide d'une boucle "for".

Voici un exemple :

def generate_numbers():
    for i in range(5):
        yield i

Dans cet exemple, generate_numbers() est une fonction génératrice qui parcourt les nombres de 0 à 4 et donne chaque valeur. Pour utiliser ce générateur, vous pouvez le parcourir à l'aide d'une boucle "for" :

for number in generate_numbers():
    print(number)

Ce code imprimera les nombres de 0 à 4.

Avantages des générateurs

Les générateurs offrent plusieurs avantages par rapport aux itérables traditionnels :

  • Mémoire efficacité : Les générateurs ne stockent pas toutes les valeurs en mémoire simultanément, contrairement aux itérables. Cela les rend idéaux pour générer de grandes séquences ou des séquences dont la taille n'est pas connue à l'avance.
  • Évaluation paresseuse : les générateurs ne génèrent des valeurs que lorsqu'elles sont nécessaires, économisant ainsi du temps de calcul et des ressources.
  • Flexibilité : Les générateurs peuvent être réutilisés plusieurs fois sans avoir besoin de les réinitialiser, ce qui les rend pratiques pour créer des pipelines et autres complexes opérations.

Conclusion

"yield" est un mot-clé puissant en Python qui vous permet de créer des générateurs, un type unique d'itérable qui génère des valeurs à la demande. Les générateurs offrent des avantages tels que l'efficacité de la mémoire, l'évaluation paresseuse et la flexibilité, ce qui en fait un outil précieux dans divers scénarios de programmation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn