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 ()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):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, 8Appel 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):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, 81Conclusion
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.