A Python, podem retornar diversos valors d'una funció. A continuació hi ha diferents maneres 1) Ús d'objecte: Això és similar a C/C++ i Java, podem crear una classe (en C, struct) per contenir diversos valors i retornar un objecte 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)> |
>
>Sortida
geeksforgeeks 20>
A continuació es mostren mètodes interessants per a algú que canviï el món C++/Java.
classe d'objectes en java
2) Ús de tuple: Una tupla és una seqüència d'elements separats per comes. Es crea amb o sense (). Les tuples són immutables. Vegeu això per obtenir detalls de tupla i llista.
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)> |
>
>Sortida
geeksforgeeks 20>
3) Ús d'una llista: Una llista és com una matriu d'elements creats amb claudàtors. Són diferents de les matrius, ja que poden contenir elements de diferents tipus. Les llistes són diferents de les tuples ja que són mutables.
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>)> |
>
>Sortida
alter afegir columna oracle
['geeksforgeeks', 20]>
4) Ús d'un diccionari: Un diccionari és semblant a hash o map en altres idiomes. Vegeu això per obtenir detalls del diccionari.
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)> |
>
>Sortida
{'x': 20, 'str': 'techcodeview.com'}> 5) Ús de classe de dades (Python 3.7+): A Python 3.7 i posteriors, la classe de dades es pot utilitzar per retornar una classe amb mètodes únics afegits automàticament. El mòdul Data Class té un decorador i funcions per afegir automàticament mètodes especials generats com ara __init__() i __repr__() a les classes definides per l'usuari.
Python 3
declaració javascript if
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>)> |
>
>Sortida
900 Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)>
6. Ús de 'rendiment'
Un enfocament alternatiu per retornar diversos valors d'una funció a Python és utilitzar la paraula clau yield en una funció generadora. Una funció generadora és un tipus especial de funció que retorna un objecte iterador, que genera una seqüència de valors sobre la marxa, un valor a la vegada.
Per retornar diversos valors d'una funció generadora, podeu utilitzar la paraula clau yield per obtenir cada valor al seu torn. La funció de generador aturarà l'execució fins que se sol·liciti el valor següent, moment en què reprendrà l'execució i donarà el valor següent. Aquest procés continua fins que la funció generadora completa l'execució o troba una instrucció de retorn.
Aquí teniu un exemple de com es pot fer això:
Python 3
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]> |
>
>
eina de curació gimpSortida
42 hello [1, 2, 3]>
Complexitat temporal : O(1) perquè només realitza un nombre constant d'operacions (rendiments) independentment de la mida de l'entrada.
Espai auxiliar: O(1) perquè només emmagatzema un nombre constant de variables (valors obtinguts) a la memòria en un moment donat.
Referència: http://stackoverflow.com/questions/354883/how-do-you-return-multiple-values-in-python