Maison >développement back-end >Tutoriel Python >Quelle est la différence entre le rendement et le retour en Python ?

Quelle est la différence entre le rendement et le retour en Python ?

PHPz
PHPzavant
2023-09-15 15:37:021027parcourir

Quelle est la différence entre le rendement et le retour en Python ?

En Python, la définition de generator se fait à l'aide de l'instruction yield. Donc, avant d'entrer dans les détails de l'utilisation réelle du yield, il est important de comprendre un aperçu des générateurs. Si vous êtes nouveau sur Python, il y a de fortes chances que vous ayez déjà utilisé un générateur Python. Les générateurs jouent un rôle important en Python. En Python, les itérateurs peuvent être générés à l'aide de générateurs, mais le processus prend une forme légèrement différente.

Les générateurs Python sont des fonctions qui peuvent mettre en pause, reprendre et créer dynamiquement une séquence de résultats. Ils peuvent également être utilisés pour générer des nombres aléatoires. Dans Python 2.2, les générateurs ont été introduits pour la première fois en tant que fonctionnalité facultative. Dans Python 2.3, ils sont appliqués. La fonctionnalité du générateur a été grandement améliorée dans Python 2.5, bien qu'ils disposent déjà de fonctionnalités suffisantes.

Pour maintenir la compatibilité ascendante, l'ajout de générateurs dans Python 2.2 a entraîné l'introduction d'un nouveau mot-clé appelé « rendement ». Pour utiliser les générateurs, nous devons les importer depuis le module _future_. Lorsque les générateurs sont devenus la valeur par défaut dans la version Python 2.3, cela a été modifié pour refléter le fait que cette modification n'était plus nécessaire.

Utilisez l'instruction yield pour arrêter temporairement l'exécution d'une fonction, qui renvoie ensuite une valeur à l'appelant tout en enregistrant l'état de la fonction pour une restauration ultérieure. Cela signifie que l'ensemble du générateur peut toujours être redémarré après avoir obtenu la valeur de retour. L'exécution d'une fonction se termine par une instruction return, qui renvoie également une valeur à la personne qui a appelé la fonction. En cas d'absence, votre fonction ne retournera rien.

Qu'est-ce que le rendement Python ?

Dans les générateurs Python, l'instruction yield remplace le return de la fonction pour renvoyer une valeur à la personne qui a appelé le générateur sans supprimer aucune variable locale. Afin de mieux comprendre la fonction d'exécution de l'instruction yield dans la programmation Python, vous devez d'abord vous familiariser avec les générateurs.

La différence entre une fonction génératrice et une fonction normale est qu'il y a une instruction « rendement » dans la définition de la fonction génératrice. Cela commence par le mot-clé "yield", qui identifie l'objet générateur à renvoyer à celui qui appelle cette fonction.

En Python, un type spécifique de fonction appelé « générateur » ne renvoie pas de valeur de données à la personne qui a appelé la fonction, mais renvoie à la place un autre objet générateur. À l'aide du mot-clé yield, vous pouvez arrêter temporairement l'exécution d'une fonction, enregistrer l'état et reprendre la fonction plus tard.

Exemple

Regardez l'exemple ci-dessous -

# Use of yield
def printresult(String): 
   for i in String: 
      if i == "p": 
         yield i 

# Initializing string 
String = "Happy Birthday" 
ans = 0
print ("The number of 'p' in word is: ", end = "" ) 
String = String.strip() 

for j in printresult(String): 
   ans = ans + 1

print (ans)

Sortie

The number of 'p' in word is: 2

Qu'est-ce que Python Return ?

Contrairement à l'instruction yield, l'instruction return provoque la fin de la fonction tout en renvoyant la valeur à la fonction qui l'a appelée. Les fonctions de nature plus procédurale ne renvoient rien explicitement à l'appelant, mais renvoient plutôt une valeur qui est renvoyée à la fonction appelante. Bien qu'une fonction puisse avoir plusieurs instructions return, une seule d'entre elles peut être appelée pour chaque appel à chacune de ces instructions.

L'instruction return est presque toujours placée à la toute fin d'un bloc fonction, son but est de renvoyer le résultat final de l'exécution de toutes les instructions contenues dans la fonction. Cependant, une instruction return peut également apparaître avant un bloc fonctionnel pour arrêter l'exécution de toutes les instructions suivantes dans le bloc. Cela peut se produire s'il est utilisé pour empêcher l'exécution d'une fonction. Cela amène l'appelant à redémarrer immédiatement l'exécution du programme. Lorsqu'aucune valeur n'est fournie pour l'objet return, le type d'objet de retour "Aucun" est équivalent à celui de Python.

Exemple

L'exemple suivant montre l'utilisation de return en Python -

# Show return statement 
class Test:  
   def __init__(self):  
      self.str = "Happy Birthday"
      self.x = "Pradeep"

# This function returns an object of Test  
def fun():  
   return Test()  
# Driver code to test above method  
t = fun()   
print(t.str)  
print(t.x) 

Sortie

Happy Birthday
Pradeep

Différence entre le rendement et le retour en Python

Le tableau suivant met en évidence les principales différences entre le rendement et le rendement en Python -

Basique Sortie Retour
Bases Dans la plupart des cas, vous devrez utiliser la fonction rendement pour convertir une fonction Python typique en générateur. Dans la plupart des cas, la fin de l'exécution est signalée à l'aide du mot-clé return, qui "renvoie" le résultat à l'instruction qui l'a appelé.
Caractéristiques Il remplace le retour d'une fonction afin de mettre en pause l'exécution de la fonction sans perdre aucune variable locale. Il quitte la fonction et renvoie une valeur à son appelant.
Utilisation L'appelant utilisera cette fonction lorsque le générateur fournira des résultats intermédiaires à l'appelant. Quand une fonction va transmettre une valeur, il est nécessaire de l'utiliser.
Exécuter Le code écrit après l'instruction rendement sera exécuté dans l'appel de fonction suivant. Bien que le code écrit après l'instruction return ne soit pas exécuté.
Compiler Il a la capacité de s’exécuter plusieurs fois. Il ne fonctionne qu'une fois à la fois.

Conclusion

L'instruction

yield génère un objet générateur et peut renvoyer plusieurs valeurs à l'appelant sans terminer le programme, tandis que l'instruction return est utilisée pour renvoyer une valeur à l'appelant depuis l'intérieur de la fonction, ce qui termine le programme. L'instruction return est utilisée pour renvoyer une valeur depuis une fonction à l'appelant.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Fichiers HDF5 en PythonArticle suivant:Fichiers HDF5 en Python