logo

Returnerer flere værdier i Python

I Python kan vi returnere flere værdier fra en funktion. Følgende er forskellige måder 1) Brug af objekt: Dette ligner C/C++ og Java, vi kan oprette en klasse (i C, struct) til at holde flere værdier og returnere et objekt af klassen.

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)>

>

>

Produktion

geeksforgeeks 20>

Nedenfor er interessante metoder til nogen, der skifter C++/Java-verden.

konverter byte array til streng

2) Brug af Tuple: En Tuple er en kommasepareret sekvens af elementer. Det er oprettet med eller uden (). Tuples er uforanderlige. Se dette for detaljer om tuple og 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)>

>

>

Produktion

geeksforgeeks 20>

3) Brug af en liste: En liste er som en række elementer, der er oprettet ved hjælp af firkantede parenteser. De er forskellige fra arrays, da de kan indeholde elementer af forskellige typer. Lister er forskellige fra tupler, da de kan ændres.

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>)>

java len af ​​array
>

>

Produktion

['geeksforgeeks', 20]>

4) Brug af en ordbog: En ordbog ligner hash eller kort på andre sprog. Se dette for detaljer om ordbogen.

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)>

>

ctc fuld formular
>

Produktion

{'x': 20, 'str': 'techcodeview.com'}>

5) Brug af dataklasse (Python 3.7+): I Python 3.7 og nyere kan dataklassen bruges til at returnere en klasse med automatisk tilføjede unikke metoder. Dataklasse-modulet har en dekorator og funktioner til automatisk at tilføje genererede specialmetoder såsom __init__() og __repr__() i de brugerdefinerede klasser.

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>)>

>

>

Produktion

900 Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)>

6. Brug af 'udbytte'

En alternativ tilgang til at returnere flere værdier fra en funktion i Python er at bruge nøgleordet yield i en generatorfunktion. En generatorfunktion er en speciel type funktion, der returnerer et iteratorobjekt, som genererer en sekvens af værdier på farten, én værdi ad gangen.

For at returnere flere værdier fra en generatorfunktion kan du bruge nøgleordet yield til at give hver værdi efter tur. Generatorfunktionen vil derefter pause udførelsen, indtil den næste værdi anmodes om, hvorefter den vil genoptage eksekveringen og give den næste værdi. Denne proces fortsætter, indtil generatorfunktionen fuldfører eksekveringen eller støder på en retursætning.

Her er et eksempel på, hvordan dette kan gøres:

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]>

>

data mining

>

Produktion

42 hello [1, 2, 3]>

Tidskompleksitet : O(1), fordi den kun udfører et konstant antal operationer (udbytter) uanset størrelsen af ​​input.
Hjælpeplads: O(1), fordi den kun gemmer et konstant antal variable (udbytteværdier) i hukommelsen på et givet tidspunkt.

Reference: http://stackoverflow.com/questions/354883/how-do-you-return-multiple-values-in-python