I Python kan vi returnera flera värden från en funktion. Följande är olika sätt 1) Använda objekt: Detta liknar C/C++ och Java, vi kan skapa en klass (i C, struct) för att hålla flera värden och returnera ett objekt i klassen.
Pytonorm
# 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)> |
>
>Produktion
geeksforgeeks 20>
Nedan finns intressanta metoder för någon som ändrar C++/Java-världen.
sträng till datum
2) Använda Tuple: En Tuple är en kommaseparerad sekvens av objekt. Den skapas med eller utan (). Tuples är oföränderliga. Se detta för detaljer om tupel och lista.
Pytonorm
# 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)> |
>
>Produktion
geeksforgeeks 20>
3) Använd en lista: En lista är som en rad objekt skapade med hakparenteser. De skiljer sig från arrayer eftersom de kan innehålla föremål av olika typer. Listor skiljer sig från tuplar eftersom de är föränderliga.
Pytonorm
# 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>)> |
>
>Produktion
['geeksforgeeks', 20]>
4) Använda en ordbok: En ordbok liknar hash eller karta på andra språk. Se detta för detaljer om ordboken.
när kom vinst 7 ut
Pytonorm
# 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)> |
>
>Produktion
{'x': 20, 'str': 'techcodeview.com'}> 5) Använda dataklass (Python 3.7+): I Python 3.7 och senare kan dataklassen användas för att returnera en klass med automatiskt tillagda unika metoder. Dataklassmodulen har en dekorator och funktioner för att automatiskt lägga till genererade specialmetoder som __init__() och __repr__() i de användardefinierade klasserna.
Python3
sajter som coomeet
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>)> |
>
>Produktion
900 Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)>
6. Använda 'avkastning'
Ett alternativt tillvägagångssätt för att returnera flera värden från en funktion i Python är att använda nyckelordet yield i en generatorfunktion. En generatorfunktion är en speciell typ av funktion som returnerar ett iteratorobjekt, som genererar en sekvens av värden i farten, ett värde i taget.
För att returnera flera värden från en generatorfunktion kan du använda nyckelordet avkastning för att ge varje värde i tur och ordning. Generatorfunktionen kommer sedan att pausa exekveringen tills nästa värde begärs, vid vilken tidpunkt den kommer att återuppta exekveringen och ge nästa värde. Denna process fortsätter tills generatorfunktionen slutför exekveringen eller stöter på en retursats.
Här är ett exempel på hur detta kan göras:
Python3
industri och fabrik
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]> |
>
>Produktion
42 hello [1, 2, 3]>
Tidskomplexitet : O(1) eftersom den bara utför ett konstant antal operationer (avkastning) oavsett storleken på inmatningen.
Extra utrymme: O(1) eftersom den bara lagrar ett konstant antal variabler (avkastningsvärden) i minnet vid varje given tidpunkt.
Referens: http://stackoverflow.com/questions/354883/how-do-you-return-multiple-values-in-python