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