logo

Meerdere waarden retourneren in Python

In Python kunnen we meerdere waarden uit een functie retourneren. Hieronder volgen verschillende manieren 1) Object gebruiken: Dit is vergelijkbaar met C/C++ en Java, we kunnen een klasse maken (in C, struct) die meerdere waarden bevat en een object van de klasse retourneert.

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

>

>

Uitvoer

geeksforgeeks 20>

Hieronder staan ​​interessante methoden voor iemand die de C++/Java-wereld verandert.

verbinding maken met de database in Java

2) Tuple gebruiken: Een Tuple is een door komma's gescheiden reeks items. Het is gemaakt met of zonder (). Tupels zijn onveranderlijk. Zie dit voor details van tupel en lijst.

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

>

>

Uitvoer

geeksforgeeks 20>

3) Een lijst gebruiken: Een lijst is als een reeks items gemaakt met vierkante haakjes. Ze verschillen van arrays omdat ze items van verschillende typen kunnen bevatten. Lijsten verschillen van tupels omdat ze veranderlijk zijn.

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

>

>

veelvraat versus das
Uitvoer

['geeksforgeeks', 20]>

4) Een woordenboek gebruiken: Een woordenboek is vergelijkbaar met hash of kaart in andere talen. Zie dit voor details van het woordenboek.

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

>

>

Uitvoer

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

5) Gegevensklasse gebruiken (Python 3.7+): In Python 3.7 en hoger kan de Data Class worden gebruikt om een ​​klasse te retourneren met automatisch toegevoegde unieke methoden. De Data Class-module heeft een decorateur en functies voor het automatisch toevoegen van gegenereerde speciale methoden zoals __init__() en __repr__() in de door de gebruiker gedefinieerde klassen.

typoscript foreach lus

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

>

>

Uitvoer

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

6. ‘Opbrengst’ gebruiken

Een alternatieve benadering voor het retourneren van meerdere waarden uit een functie in Python is het gebruik van het trefwoord yield in een generatorfunctie. Een generatorfunctie is een speciaal type functie die een iteratorobject retourneert, dat direct een reeks waarden genereert, één waarde tegelijk.

Als u meerdere waarden uit een generatorfunctie wilt retourneren, kunt u het trefwoord yield gebruiken om elke waarde beurtelings op te leveren. De generatorfunctie pauzeert vervolgens de uitvoering totdat de volgende waarde wordt opgevraagd, waarna de uitvoering wordt hervat en de volgende waarde wordt opgeleverd. Dit proces gaat door totdat de generatorfunctie de uitvoering voltooit of een return-instructie tegenkomt.

Hier is een voorbeeld van hoe dit kan worden gedaan:

sites zoals coomeet

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

>

>

Uitvoer

42 hello [1, 2, 3]>

Tijdcomplexiteit : O(1) omdat het slechts een constant aantal bewerkingen (opbrengsten) uitvoert, ongeacht de grootte van de invoer.
Hulpruimte: O(1) omdat het op elk moment slechts een constant aantal variabelen (opbrengstwaarden) in het geheugen opslaat.

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