Maison développement back-end Tutoriel Python Introduction à l'utilisation de rendement en python (avec code)

Introduction à l'utilisation de rendement en python (avec code)

Feb 22, 2019 pm 02:49 PM
python

Cet article vous présente une introduction à l'utilisation de rendement dans l'applet WeChat python (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Tout d'abord, si vous n'avez pas une compréhension préliminaire du rendement, alors vous considérez d'abord le rendement comme un « retour ». C'est intuitif. C'est avant tout un retour. ? Une certaine valeur est renvoyée dans le programme. Après le retour, le programme ne s'exécutera plus. Après l'avoir vu comme un retour, considérez-le comme faisant partie d'un générateur (la fonction avec rendement est le véritable itérateur). Eh bien, si vous ne les comprenez pas, traitez d'abord le rendement comme un retour. et vous comprendrez toute la signification de rendement :

1

2

3

4

5

6

7

8

9

def foo():

    print("starting...")

    while True:

        res = yield 4

        print("res:",res)

g = foo()

print(next(g))

print("*"*20)

print(next(g))

Copier après la connexion

Quelques lignes de code vous permettront de comprendre ce qu'est le rendement. Le résultat du code est le suivant :

1

2

3

4

5

starting...

4

********************

res: None

4

Copier après la connexion
.

J'explique directement la séquence d'exécution du code, qui équivaut au débogage du code en une seule étape :

1 Une fois que le programme commence à s'exécuter, car il y a le mot-clé rendement dans la fonction foo, le foo. la fonction ne s'exécutera pas vraiment, mais obtenez d'abord un générateur g (équivalent à un objet)

2. Jusqu'à ce que la méthode suivante soit appelée, la fonction foo commence officiellement à s'exécuter. Exécutez d'abord la méthode print dans la fonction foo. , puis entrez la boucle while

3. Le programme rencontre le mot-clé rendement, puis considère le rendement comme un retour. Après avoir renvoyé un 4, le programme s'arrête sans exécuter l'opération res. l'instruction next(g) est terminée. Ainsi, les deux premières lignes de sortie (la première est le résultat de print ci-dessus tandis que la seconde est le résultat de return) sont les résultats de l'exécution de print(next(g)),

4. Le programme exécute print (""20), sortie 20 *

5. Recommencez l'exécution du print(next(g)) suivant, cette fois c'est le cas. similaire à celui ci-dessus, mais la différence est que ceci À ce moment, l'exécution commence à l'endroit où le programme suivant s'est arrêté, c'est-à-dire que l'opération d'affectation de res doit être effectuée à ce moment-là, il convient de noter qu'il n'y en a pas. valeur sur le côté droit de l'opération d'affectation à ce moment (car celle qui vient d'être renvoyée a été renvoyée et aucune valeur n'a été donnée. Les paramètres sont passés sur le côté gauche de l'opération d'affectation), donc à ce moment l'affectation res est Aucune, donc la sortie suivante est res:None,

6. Le programme continuera à s'exécuter pendant ce temps et rencontrera à nouveau le rendement. Cette fois, retournez les sorties 4, puis le programme s'arrête. function est la 4 sortie de ce retour.

À ce stade, vous pouvez comprendre la relation et la différence entre le rendement et le retour. La fonction avec rendement est un générateur de génération au lieu d'une fonction. qui est la fonction suivante. Next équivaut au nombre généré dans "l'étape suivante". Cette fois, le point de départ de next est exécuté à partir de l'endroit où le dernier next s'est arrêté, donc lors de l'appel de next, le générateur ne s'exécutera pas. depuis le début de la fonction foo, mais continuera simplement là où l'étape précédente s'est arrêtée. Ensuite, après avoir rencontré le rendement, le nombre à générer sera renvoyé et cette étape se terminera.

1

2

3

4

5

6

7

8

9

def foo():

    print("starting...")

    while True:

        res = yield 4

        print("res:",res)

g = foo()

print(next(g))

print("*"*20)

print(g.send(7))

Copier après la connexion

Regardons un autre exemple de la fonction d'envoi de ce générateur. Cet exemple remplace la dernière ligne de l'exemple ci-dessus, et le résultat de sortie est :

1

2

3

4

5

starting...

4

********************

res: 7

4

Copier après la connexion

Parlons-en. à ce sujet brièvement. Examinons le concept de la fonction send : à ce stade, vous devriez remarquer le mot violet ci-dessus, et pourquoi la valeur de res ci-dessus est None, et celle-ci devient 7. Pourquoi est-ce parce que send envoie un ? paramètre à res. Oui, car comme mentionné ci-dessus, 4 n'est pas affecté à res lors du retour, la prochaine fois qu'il est exécuté, il doit continuer à effectuer l'opération d'affectation et doit l'affecter à None. il commence à s'exécuter, il continuera. Une fois exécuté (après le retour 4), 7 est d'abord affecté à res, puis la fonction suivante est exécutée Lorsque le prochain rendement est rencontré, le résultat est renvoyé et se termine.

5. Le programme exécute g.send(7), et le programme continuera à s'exécuter vers le bas à partir de la ligne de mot-clé rendement, et send attribuera la valeur 7 à la variable res

6. .Depuis que send La méthode contient la méthode next(), le programme continuera donc à s'exécuter vers le bas pour exécuter la méthode print, puis entrera à nouveau dans la boucle while

7 Une fois que l'exécution du programme aura rencontré à nouveau le mot-clé rendement. , rendement renverra la valeur suivante et le programme fera à nouveau une pause jusqu'à ce que la méthode ou la méthode d'envoi suivante soit à nouveau appelée.

C'est tout. Parlons de pourquoi nous utilisons ce générateur C'est parce que si nous utilisons List, cela prendra plus d'espace. ...........1000

Vous pourriez ressembler à ceci :

1

2

for n in range(1000):

    a=n

Copier après la connexion

À ce moment, range(1000) générera une liste contenant 1000 nombres par défaut . , donc cela prend beaucoup de mémoire.

À l'heure actuelle, vous pouvez utiliser la combinaison de rendement tout de suite pour former un générateur à implémenter, ou vous pouvez utiliser le générateur xrange(1000) pour implémenter la

combinaison de rendement :

1

2

3

4

5

6

7

def foo(num):

    print("starting...")

    while num<10:

        num=num+1

        yield num

for n in foo(0):

    print(n)

Copier après la connexion

Sortie :

1

2

3

4

5

6

7

8

9

10

11

starting...

1

2

3

4

5

6

7

8

9

10

Copier après la connexion

xrange(1000) :

1

2

for n in xrange(1000):

    a=n

Copier après la connexion

Il convient de noter qu'il n'y a pas de xrange() en python3, range(). est xrange() Maintenant, vous pouvez vérifier le type de range() dans python3. C'est déjà une , pas une liste. Après tout, cela doit être optimisé.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD
Musée à deux points: toutes les expositions et où les trouver
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? Apr 02, 2025 pm 10:09 PM

La vitesse du XML mobile à PDF dépend des facteurs suivants: la complexité de la structure XML. Méthode de conversion de configuration du matériel mobile (bibliothèque, algorithme) Méthodes d'optimisation de la qualité du code (sélectionnez des bibliothèques efficaces, optimiser les algorithmes, les données de cache et utiliser le multi-threading). Dans l'ensemble, il n'y a pas de réponse absolue et elle doit être optimisée en fonction de la situation spécifique.

Y a-t-il une application mobile qui peut convertir XML en PDF? Y a-t-il une application mobile qui peut convertir XML en PDF? Apr 02, 2025 pm 08:54 PM

Une application qui convertit le XML directement en PDF ne peut être trouvée car ce sont deux formats fondamentalement différents. XML est utilisé pour stocker des données, tandis que PDF est utilisé pour afficher des documents. Pour terminer la transformation, vous pouvez utiliser des langages de programmation et des bibliothèques telles que Python et ReportLab pour analyser les données XML et générer des documents PDF.

Comment convertir les fichiers XML en PDF sur votre téléphone? Comment convertir les fichiers XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:12 PM

Il est impossible de terminer la conversion XML à PDF directement sur votre téléphone avec une seule application. Il est nécessaire d'utiliser les services cloud, qui peuvent être réalisés via deux étapes: 1. Convertir XML en PDF dans le cloud, 2. Accédez ou téléchargez le fichier PDF converti sur le téléphone mobile.

Quelle est la fonction de la somme du langage C? Quelle est la fonction de la somme du langage C? Apr 03, 2025 pm 02:21 PM

Il n'y a pas de fonction de somme intégrée dans le langage C, il doit donc être écrit par vous-même. La somme peut être obtenue en traversant le tableau et en accumulant des éléments: Version de boucle: la somme est calculée à l'aide de la longueur de boucle et du tableau. Version du pointeur: Utilisez des pointeurs pour pointer des éléments de tableau, et un résumé efficace est réalisé grâce à des pointeurs d'auto-incitation. Allouer dynamiquement la version du tableau: allouer dynamiquement les tableaux et gérer la mémoire vous-même, en veillant à ce que la mémoire allouée soit libérée pour empêcher les fuites de mémoire.

Comment contrôler la taille de XML converti en images? Comment contrôler la taille de XML converti en images? Apr 02, 2025 pm 07:24 PM

Pour générer des images via XML, vous devez utiliser des bibliothèques de graphiques (telles que Pillow et JFreechart) comme ponts pour générer des images basées sur des métadonnées (taille, couleur) dans XML. La clé pour contrôler la taille de l'image est d'ajuster les valeurs de & lt; largeur & gt; et & lt; height & gt; Tags dans XML. Cependant, dans les applications pratiques, la complexité de la structure XML, la finesse du dessin de graphiques, la vitesse de la génération d'images et la consommation de mémoire et la sélection des formats d'image ont tous un impact sur la taille de l'image générée. Par conséquent, il est nécessaire d'avoir une compréhension approfondie de la structure XML, compétent dans la bibliothèque graphique, et de prendre en compte des facteurs tels que les algorithmes d'optimisation et la sélection du format d'image.

Comment convertir XML en images Comment convertir XML en images Apr 03, 2025 am 07:39 AM

XML peut être converti en images en utilisant un convertisseur XSLT ou une bibliothèque d'images. Convertisseur XSLT: Utilisez un processeur XSLT et une feuille de style pour convertir XML en images. Bibliothèque d'images: utilisez des bibliothèques telles que PIL ou ImageMagick pour créer des images à partir de données XML, telles que des formes de dessin et du texte.

Comment ouvrir le format XML Comment ouvrir le format XML Apr 02, 2025 pm 09:00 PM

Utiliser la plupart des éditeurs de texte pour ouvrir des fichiers XML; Si vous avez besoin d'un affichage d'arbre plus intuitif, vous pouvez utiliser un éditeur XML, tel que Oxygen XML Editor ou XMLSPY; Si vous traitez les données XML dans un programme, vous devez utiliser un langage de programmation (tel que Python) et des bibliothèques XML (telles que XML.ETREE.ElementTree) pour analyser.

Outil de mise en forme XML recommandé Outil de mise en forme XML recommandé Apr 02, 2025 pm 09:03 PM

Les outils de mise en forme XML peuvent taper le code en fonction des règles pour améliorer la lisibilité et la compréhension. Lors de la sélection d'un outil, faites attention aux capacités de personnalisation, en gérant des circonstances spéciales, des performances et de la facilité d'utilisation. Les types d'outils couramment utilisés incluent des outils en ligne, des plug-ins IDE et des outils de ligne de commande.

See all articles