În Python, putem returna mai multe valori dintr-o funcție. Următoarele sunt moduri diferite 1) Folosind Object: Acest lucru este similar cu C/C++ și Java, putem crea o clasă (în C, struct) pentru a păstra mai multe valori și a returna un obiect al clasei.
Piton
# 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)> |
>
>Ieșire
geeksforgeeks 20>
Mai jos sunt metode interesante pentru cineva care schimbă lumea C++/Java.
shweta tiwari
2) Folosind tuple: Un tuplu este o secvență de elemente separate prin virgulă. Este creat cu sau fără (). Tuplurile sunt imuabile. Vedeți aceasta pentru detalii despre tuplu și listă.
Piton
# 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)> |
>
>Ieșire
geeksforgeeks 20>
3) Folosind o listă: O listă este ca o serie de elemente create folosind paranteze pătrate. Ele sunt diferite de matrice, deoarece pot conține elemente de diferite tipuri. Listele sunt diferite de tupluri, deoarece sunt mutabile.
Piton
# 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>)> |
>
>
cati mb intr-un gbIeșire
['geeksforgeeks', 20]>
4) Utilizarea unui dicționar: Un dicționar este similar cu hash sau map în alte limbi. Vedeți aceasta pentru detalii despre dicționar.
Piton
# 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)> |
>
>Ieșire
{'x': 20, 'str': 'techcodeview.com'}> 5) Utilizarea clasei de date (Python 3.7+): În Python 3.7 și versiunile ulterioare, Clasa de date poate fi utilizată pentru a returna o clasă cu metode unice adăugate automat. Modulul Data Class are un decorator și funcții pentru adăugarea automată a metodelor speciale generate, cum ar fi __init__() și __repr__() în clasele definite de utilizator.
roata mouse-ului nu derulează corect
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>)>->>>>> >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>)> |
>
>Ieșire
900 Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)>
6. Utilizarea „randamentului”
O abordare alternativă pentru returnarea mai multor valori dintr-o funcție în Python este utilizarea cuvântului cheie yield într-o funcție generatoare. O funcție generator este un tip special de funcție care returnează un obiect iterator, care generează o secvență de valori din mers, câte o valoare.
Pentru a returna mai multe valori dintr-o funcție generatoare, puteți utiliza cuvântul cheie yield pentru a obține fiecare valoare pe rând. Funcția generator va întrerupe apoi execuția până când este solicitată următoarea valoare, moment în care va relua execuția și va da următoarea valoare. Acest proces continuă până când funcția generator finalizează execuția sau întâlnește o instrucțiune return.
Iată un exemplu despre cum se poate face acest lucru:
harta vs set
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]> |
>
>Ieșire
42 hello [1, 2, 3]>
Complexitatea timpului : O(1) deoarece efectuează doar un număr constant de operații (randament) indiferent de mărimea intrării.
Spatiu auxiliar: O(1) deoarece stochează doar un număr constant de variabile (valori rezultate) în memorie la un moment dat.
Referinţă: http://stackoverflow.com/questions/354883/how-do-you-return-multiple-values-in-python