Langage Python

Notification de cookies

Nous utilisons des cookies pour améliorer votre expérience. En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Plus d'informations

La fonction yield

La fonction yield suspend l’exécution de la fonction et renvoie une valeur à l’appelant, mais conserve suffisamment d’état pour permettre à la fonction de reprendre là où elle a été laissée.
Une fois reprise, la fonction continue l'exécution immédiatement après la dernière exécution. Cela permet à son code de produire une série de valeurs dans le temps, plutôt de les calculer en une fois et de les renvoyer comme une liste.

Exemple :
            def generateur(n):
                for i in range(n):
                    yield i
            
            for value in generateur(6):  
                print(value) 
        
            0
            1
            2
            3
            4
            5
        

return renvoie une valeur spécifiée à l'appelant, alors que yield peut produire une séquence de valeurs.
Nous devrions utiliser yield lorsque nous voulons parcourir une séquence, mais ne voulons pas stocker la séquence entière en mémoire.
yield est utilisé dans les générateurs Python.

Une fonction génératrice est définie comme une fonction normale, mais chaque fois qu'elle doit générer une valeur, elle le fait avec le mot-clé yield plutôt que return. Si le corps d'un def contient du yield, la fonction devient automatiquement une fonction génératrice.

Exemple :

la fonction génératrice suivante affiche les factoriels des nombres 2 -> 5

            def fact(n):
                f=1
                for i in range(2,n):
                    f*=i
                    yield f
            
            for val in fact(6):
                print(val)
        
            2
            6
            24
            120
        

Avantages

  • Puisqu'il stocke les états de variables locales, la surcharge d'allocation de mémoire est donc contrôlée.
  • L’ancien état étant conservé, le flux ne commence pas au début et permet donc de gagner du temps.

Inconvénients

  • Parfois, l'utilisation de yield devient erronée si l'appel de la fonction n'est pas géré correctement.
  • L’optimisation de la durée et de la mémoire a un coût de complexité du code et donc parfois une logique difficile à comprendre.

Applications pratiques

L’application pratique possible est que, lorsque vous manipulez la dernière quantité de données et recherchez des détails à partir de celle-ci, vous pouvez utiliser yield car nous n’avons pas besoin de rechercher à nouveau depuis le début, ce qui gagnerait du temps, et bien d'autres ...

Partager ce cours avec tes amis :

Rédigé par M. ESSADDOUKI

Learning a new programming language is an easy thing, but the most difficult thing is how to design efficient algorithms for real-world problems, so don't be a programmer, be a problems solver.

Cours Similaires :