Maison >développement back-end >Tutoriel Python >Comment le mot clé « rendement » de Python permet-il une génération de données efficace ?

Comment le mot clé « rendement » de Python permet-il une génération de données efficace ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-23 13:11:11732parcourir

How Does Python's `yield` Keyword Enable Efficient Data Generation?

Comprendre la fonction du mot-clé « rendement » en Python

Les fonctions génératrices, les itérateurs et le mot-clé rendement sont des concepts fondamentaux en Python qui vous permettent de générer des données de manière incrémentielle .

Itérateurs

Les itérateurs sont des objets qui renvoient une valeur d'une collection à la fois. Pour accéder à chaque valeur suivante, vous appelez la méthode next() de manière répétitive.

Fonctions du générateur

Les fonctions du générateur créent des itérateurs. Elles sont similaires aux fonctions normales mais contiennent des instructions de rendement. rendement se comporte comme return, mais au lieu de terminer la fonction, il suspend l'exécution et renvoie la valeur.

Mot-clé de rendement

Le mot-clé de rendement est utilisé dans les fonctions du générateur. Chaque fois que rendement est appelé, la fonction génératrice renvoie la valeur spécifiée et suspend l'exécution. Lorsque le générateur est à nouveau appelé, l'exécution reprend là où la dernière instruction rendement s'est arrêtée.

Exemple

Considérez le code suivant :

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

Ce code définit une fonction génératrice qui produit des entiers de 0 à 4. Lorsqu'elle est appelée avec next(), la fonction renvoie 0, 1, 2, 3 et 4 séquentiellement.

Application

Les fonctions du générateur sont couramment utilisées :

  • Traitement incrémentiel des données : Générez des données de manière incrémentielle, réduisant ainsi l'utilisation de la mémoire.
  • Programmation asynchrone : Suspendre et reprendre l'exécution en attendant les E/S opérations.
  • Contrôle de l'accès aux ressources : Limitez l'accès simultané aux ressources en cédant uniquement lorsque les ressources sont disponibles.

Contrôle de l'épuisement du générateur

Générateur les fonctions peuvent être contrôlées pour éviter un épuisement prématuré. Par exemple :

class Bank:
    def create_atm(self):
        while True:
            yield "0"

Ce code crée un générateur ATM infini. Cependant, vous pouvez y mettre fin en attribuant True à self.crisis. Cette approche est utile pour contrôler la disponibilité des ressources.

Module Itertools

Le module itertools fournit des outils supplémentaires pour manipuler les itérables, tels que permutations(), qui peuvent générer toutes les permutations possibles à partir d'une liste.

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