Comment utiliser les fonctions du générateur Python Howto

Comment utiliser les fonctions du générateur Python Howto
La fonction du générateur fonctionne de manière similaire à la fonction normale. Mais quand il est temps de renvoyer une valeur, nous utilisons la fonction de rendement au lieu de retourner dans Python. La fonction du générateur fonctionne à l'aide d'objets générateurs. Dans cet article, nous apprendrons la différence significative entre la normale et les fonctions du générateur.

Syntaxe

Expression du rendement

Le rendement Python renvoie l'objet générateur. Ce sont les objets spéciaux qui aident à obtenir la valeur. Pour cette raison, il est itéré.

Outils du générateur Python

Fonction du générateur:

Ces fonctions sont définies comme une fonction normale «DEF», mais elles utilisent le mot clé de rendement au lieu de retourner. Ainsi, le résultat est obtenu un à la fois.

Expressions du générateur:

Ces expressions fonctionnent de manière similaire aux compréhensions de la liste. Cependant, ils diffèrent dans un aspect. Au fur et à mesure qu'ils retournent un objet, il montre le résultat uniquement lorsqu'il est demandé au lieu de produire les listes de résultats.

Exemple

Une illustration simple pour éclairer le concept de générateurs est expliquée ci-dessous. Au début, nous définirons le générateur, comme nous l'avions utilisé pour définir une fonction simple. Après cela, nous allons imprimer la chaîne et utiliserons le mot clé de rendement pour renvoyer la valeur.

Def gen ()
Rendement 10

Où gen () est le nom d'un générateur, chaque fois que le rendement est appelé, il renvoie la valeur à afficher.

Pour obtenir la sortie sur Linux, accédez au terminal Ubuntu et écrivez la commande suivante:

$ python3 '/ home / aqsa / documents / resultTemp.py '

Lorsque Python3 est un mot-clé utilisé, nous avons utilisé le chemin d'accès d'un fichier ayant l'extension de «.py "qui montre que le fichier est écrit en python.

La sortie est la suivante:

Vous pouvez voir que la fonction de rendement a renvoyé chaque valeur ligne par ligne.

Différence entre le générateur et les fonctions normales

Ici, nous avons pris un exemple pour expliquer la différence entre une fonction régulière et le générateur ayant une fonction de rendement. Au début, la fonction normale est définie:

Fonction def ()

Dans cette fonction, seule une chaîne est imprimée en sortie. Deuxièmement, nous avons défini un générateur.

Def Generator ()

Cela donnera la chaîne en tant que sortie. Après avoir défini à la fois la fonction et le générateur, nous autoriserons les appels de fonction et les laisserons imprimer.

Print (générateur ())

Maintenant, nous allons afficher la sortie en exécutant la même pratique décrite ci-dessus.

À partir de la sortie, vous pouvez voir que le résultat de la fonction normale est obtenu, mais le générateur a montré une sorte d'erreur. Il existe donc une autre façon d'obtenir la sortie en utilisant l'objet du générateur. Nous avons pris le même exemple que décrit ci-dessus pour expliquer la fonctionnalité. L'ensemble du code est le même, mais la méthode d'impression du générateur est remplacée par le code suivant:

Print (suivant (générateur ()))

Cette commande aidera à récupérer la chaîne écrite dans le générateur.

Maintenant, à partir de la sortie, vous pouvez afficher cela au lieu d'afficher le message d'erreur. La sortie souhaitée est obtenue sous la forme d'une chaîne.

Obtenir / lire les valeurs de la fonction du générateur

Il existe différentes fonctions qui aident à obtenir la sortie du générateur. Nous en discuterons deux un par un.

Liste ()

Une liste est un objet qui contient ses valeurs à l'intérieur des supports. Cet objet est itérable et affiche les valeurs avec les itérations. Dans le générateur, les listes afficheront toutes les valeurs que le générateur contient. Outre la liste, les fonctions Loop () et Next () sont également utilisées pour présenter la sortie.

Considérons un exemple dans lequel nous avons défini un générateur nommé «fonction» dans laquelle nous avons utilisé une boucle pour les nombres pour itérer. Une opération mathématique est effectuée dans cette fonction. La fonction du générateur reçoit une valeur qui est passée en tant que paramètre lorsque cette fonction est appelée.

Pour x dans la gamme (n):
If (x% 2 == 0):
Rendement x

Ceci est le code central de la fonction du générateur:

Ensuite, après avoir trouvé le module, la valeur résultante est renvoyée en utilisant le rendement. Ensuite, la procédure supplémentaire d'impression se fait via la fonction de liste qui est la suivante.

Imprimer (liste (num))

Cette fonction fournit la sortie sous la forme d'une liste. Par exemple, la sortie est indiquée ci-dessous:

Suivant()

La fonction suivante affichera la valeur suivante dans n'importe quelle liste, tableau ou objet. Si nous utilisons la fonction suivante dans un tableau vide, il affichera un message d'erreur. Donc, pour obtenir la valeur fine, le tableau ou la liste ne doit pas être vide. La même opération mathématique est appliquée dans cet exemple. Cependant, la méthode d'impression est différente. Étant donné que 20 est le nombre passé comme un paramètre, les nombres seront obtenus jusqu'à ce que 20 soit atteint dans la sortie. Nous avons terminé sept tours.

Imprimer (suivant (num))

Maintenant, nous verrons la sortie. Remarque, tous les nombres pair sont obtenus:

Série de nombres Fibonacci et générateurs

La série Fibonacci est la séquence de nombres acquis en ajoutant les deux derniers nombres avant lui. Nous avons utilisé l'exemple suivant pour comprendre la fonctionnalité des générateurs. Dans cette fonction, nous avons pris deux variables qui y stockent deux valeurs numériques. Nous avons également pris une variable de décompte. Cette fonction fonctionnera de telle manière qu'il vérifie si la valeur du nombre est inférieure au nombre actuel. Ensuite, il ajoutera les deux numéros précédents, et cela les sauvera dans le prochain. Le processus restera jusqu'à ce que le numéro 7 soit atteint. Enfin, le résultat est obtenu en utilisant la boucle () pour.

La sortie du code ci-dessus apposé est la suivante:

0, 1, 1, 2, 3, 5, 8

Appel de fonction en utilisant le rendement

Ceci est l'exemple d'appeler la fonction en utilisant le rendement. En comparaison, nous avons utilisé la fonction carrée dans le générateur.

Def getSquare (n):
Test de rendement (i)

Grâce à la fonction de rendements, nous avons utilisé l'appel de fonction pour obtenir la réponse:

La sortie requise est donnée ci-dessous:

0, 1, 4, 9, 14, 25, 36, 49, 64, 81

Conclusion

Dans cet article, nous avons expliqué les exemples d'un générateur, comment nous pouvons obtenir la sortie et la différence entre le générateur et la fonction normale.