En Python, nous pouvons renvoyer plusieurs valeurs à partir d'une fonction. Voici différentes manières 1) Utilisation d'un objet : Ceci est similaire à C/C++ et Java, nous pouvons créer une classe (en C, struct) pour contenir plusieurs valeurs et renvoyer un objet de la classe.
Python
# A Python program to return multiple> # values from a method using class> class> Test:> >def> __init__(>self>):> >self>.>str> => 'geeksforgeeks'> >self>.x>=> 20> # 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)> |
>
>Sortir
geeksforgeeks 20>
Vous trouverez ci-dessous des méthodes intéressantes pour quelqu'un qui change de monde C++/Java.
démarque des notes de bas de page
2) Utiliser un tuple : Un tuple est une séquence d’éléments séparés par des virgules. Il est créé avec ou sans (). Les tuples sont immuables. Voir ceci pour plus de détails sur le tuple et la liste.
Python
# A Python program to return multiple> # values from a method using tuple> # This function returns a tuple> def> fun():> >str> => 'geeksforgeeks'> >x>=> 20> >return> str>, x># Return tuple, we could also> ># write (str, x)> # Driver code to test above method> str>, x>=> fun()># Assign returned tuple> print>(>str>)> print>(x)> |
>
>Sortir
geeksforgeeks 20>
3) Utiliser une liste : Une liste est comme un tableau d’éléments créés à l’aide de crochets. Ils sont différents des tableaux car ils peuvent contenir des éléments de différents types. Les listes sont différentes des tuples car elles sont modifiables.
Python
# A Python program to return multiple> # values from a method using list> # This function returns a list> def> fun():> >str> => 'geeksforgeeks'> >x>=> 20> >return> [>str>, x]> # Driver code to test above method> list> => fun()> print>(>list>)> |
que signifie xd
>
>Sortir
['geeksforgeeks', 20]>
4) Utiliser un dictionnaire : Un dictionnaire est similaire au hachage ou à la carte dans d’autres langues. Voir ceci pour plus de détails sur le dictionnaire.
Python
# A Python program to return multiple> # values from a method using dictionary> # This function returns a dictionary> def> fun():> >d>=> dict>();> >d[>'str'>]>=> 'techcodeview.com'> >d[>'x'>]>=> 20> >return> d> # Driver code to test above method> d>=> fun()> print>(d)> |
>
modem contre routeur
>Sortir
{'x': 20, 'str': 'techcodeview.com'}> 5) Utilisation de la classe de données (Python 3.7+) : Dans Python 3.7 et versions ultérieures, la classe Data peut être utilisée pour renvoyer une classe avec des méthodes uniques ajoutées automatiquement. Le module Data Class dispose d'un décorateur et de fonctions pour ajouter automatiquement des méthodes spéciales générées telles que __init__() et __repr__() dans les classes définies par l'utilisateur.
Python3
from> dataclasses>import> dataclass> @dataclass> class> Book_list:> >name:>str> >perunit_cost:>float> >quantity_available:>int> => 0> > ># function to calculate total cost> >def> total_cost(>self>)>->>>float>:> >return> self>.perunit_cost>*> self>.quantity_available> > book>=> Book_list(>'Introduction to programming.'>,>300>,>3>)> x>=> book.total_cost()> # print the total cost> # of the book> print>(x)> # print book details> print>(book)> # 900> Book_list(name>=>'Python programming.'>,> >perunit_cost>=>200>,> >quantity_available>=>3>)> |
>
>Sortir
900 Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)>
6. Utiliser le « rendement »
Une approche alternative pour renvoyer plusieurs valeurs à partir d’une fonction en Python consiste à utiliser le mot-clé rendement dans une fonction génératrice. Une fonction génératrice est un type spécial de fonction qui renvoie un objet itérateur, qui génère une séquence de valeurs à la volée, une valeur à la fois.
java convertit un entier en chaîne
Pour renvoyer plusieurs valeurs à partir d'une fonction génératrice, vous pouvez utiliser le mot-clé rendement pour générer chaque valeur tour à tour. La fonction génératrice suspendra ensuite l'exécution jusqu'à ce que la valeur suivante soit demandée, auquel cas elle reprendra l'exécution et produira la valeur suivante. Ce processus se poursuit jusqu'à ce que la fonction génératrice termine son exécution ou rencontre une instruction return.
Voici un exemple de la façon dont cela peut être fait :
Python3
def> get_values():> >yield> 42> >yield> 'hello'> >yield> [>1>,>2>,>3>]> # Test code> result>=> get_values()> print>(>next>(result))># should print 42> print>(>next>(result))># should print 'hello'> print>(>next>(result))># should print [1, 2, 3]> |
>
>Sortir
42 hello [1, 2, 3]>
Complexité temporelle : O(1) car il n'effectue qu'un nombre constant d'opérations (rendements) quelle que soit la taille de l'entrée.
Espace auxiliaire : O(1) car il ne stocke qu'un nombre constant de variables (valeurs produites) en mémoire à un moment donné.
Référence: http://stackoverflow.com/questions/354883/how-do-you-return-multiple-values-in-python