logo

Vrátenie viacerých hodnôt v Pythone

V Pythone môžeme vrátiť viacero hodnôt z funkcie. Nasledujú rôzne spôsoby 1) Použitie objektu: Je to podobné ako v C/C++ a Jave, môžeme vytvoriť triedu (v C, struct) na uchovávanie viacerých hodnôt a vrátenie objektu triedy.

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



>

>

Výkon

geeksforgeeks 20>

Nižšie sú uvedené zaujímavé metódy pre niekoho, kto posúva svet C++/Java.

latexové veľkosti písma

2) Použitie Tuple: Tuple je čiarkou oddelená postupnosť položiek. Je vytvorený s alebo bez (). N-tice sú nemenné. Podrobnosti o n-tici a zozname nájdete tu.

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

>

>

Výkon

geeksforgeeks 20>

3) Pomocou zoznamu: Zoznam je ako pole položiek vytvorených pomocou hranatých zátvoriek. Líšia sa od polí, pretože môžu obsahovať položky rôznych typov. Zoznamy sa líšia od n-tic, pretože sú meniteľné.

Python


css prechod opacity



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

>

>

Výkon

['geeksforgeeks', 20]>

4) Použitie slovníka: Slovník je podobný ako hash alebo mapa v iných jazykoch. Podrobnosti o slovníku nájdete v tomto.

Python




nerovná sa mysql

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

>

>

Výkon

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

5) Použitie triedy údajov (Python 3.7+): V Pythone 3.7 a novších môže byť Data Class použitá na vrátenie triedy s automaticky pridanými jedinečnými metódami. Modul Data Class má dekorátor a funkcie na automatické pridávanie vygenerovaných špeciálnych metód, ako sú __init__() a __repr__() do tried definovaných používateľom.

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

>

>

Výkon

reťazec na booleovskú javu
900 Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)>

6. Použitie „výnosu“

Jedným z alternatívnych prístupov na vrátenie viacerých hodnôt z funkcie v Pythone je použitie kľúčového slova výnos vo funkcii generátora. Funkcia generátora je špeciálny typ funkcie, ktorá vracia objekt iterátora, ktorý priebežne generuje postupnosť hodnôt, jednu hodnotu po druhej.

Ak chcete vrátiť viacero hodnôt z funkcie generátora, môžete použiť kľúčové slovo výnos na získanie každej hodnoty postupne. Funkcia generátora potom pozastaví vykonávanie, kým sa nepožiada o ďalšiu hodnotu, v tomto bode obnoví vykonávanie a poskytne ďalšiu hodnotu. Tento proces pokračuje, kým funkcia generátora nedokončí vykonávanie alebo kým nenarazí na príkaz return.

Tu je príklad, ako to možno urobiť:

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

>

>

Výkon

42 hello [1, 2, 3]>

Časová zložitosť : O(1), pretože vykonáva iba konštantný počet operácií (výnosov) bez ohľadu na veľkosť vstupu.
Pomocný priestor: O(1), pretože v každom danom čase ukladá do pamäte iba konštantný počet premenných (získaných hodnôt).

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