Python sistemoje galime grąžinti kelias funkcijos reikšmes. Toliau pateikiami skirtingi būdai 1) Objekto naudojimas: Tai panašu į C/C++ ir Java, galime sukurti klasę (C, struct), kad būtų galima laikyti kelias reikšmes ir grąžinti klasės objektą.
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)> |
>
>Išvestis
geeksforgeeks 20>
Žemiau pateikiami įdomūs metodai tiems, kurie keičia C++/Java pasaulį.
daugiagija java
2) „Tuple“ naudojimas: Stulpelis yra kableliais atskirta elementų seka. Jis sukurtas su arba be (). Kortelės yra nekintamos. Žr. tai, jei norite sužinoti daugiau apie eilutę ir sąrašą.
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)> |
>
>Išvestis
geeksforgeeks 20>
3) Sąrašo naudojimas: Sąrašas yra tarsi elementų masyvas, sukurtas naudojant laužtinius skliaustus. Jie skiriasi nuo masyvų, nes juose gali būti įvairių tipų elementų. Sąrašai skiriasi nuo eilučių, nes yra kintami.
Python
„Android“ nustatymų meniu
# 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>)> |
>
>Išvestis
['geeksforgeeks', 20]>
4) Žodyno naudojimas: Žodynas yra panašus į maišą arba žemėlapį kitomis kalbomis. Išsamią informaciją apie žodyną rasite čia.
Python
išgelbėti nuo
# 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)> |
>
>Išvestis
{'x': 20, 'str': 'techcodeview.com'}> 5) Duomenų klasės naudojimas (Python 3.7+): Python 3.7 ir naujesnėse versijose duomenų klasę galima naudoti norint grąžinti klasę su automatiškai pridedamais unikaliais metodais. Duomenų klasės modulis turi dekoratorių ir funkcijas, skirtas automatiškai pridėti sugeneruotus specialius metodus, tokius kaip __init__() ir __repr__() į vartotojo nustatytas klases.
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>)>->>>> >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>)> |
>
>Išvestis
Linux kuris
900 Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)>
6. „Iegulio“ naudojimas
Vienas iš alternatyvių būdų, kaip grąžinti kelias reikšmes iš funkcijos Python, yra generatoriaus funkcijoje naudoti raktinį žodį. Generatoriaus funkcija yra specialus funkcijos tipas, kuris grąžina iteratoriaus objektą, kuris generuoja reikšmių seką skrydžio metu, po vieną reikšmę.
Norėdami grąžinti kelias reikšmes iš generatoriaus funkcijos, galite naudoti raktinį žodį, kad gautumėte kiekvieną vertę paeiliui. Tada generatoriaus funkcija pristabdys vykdymą, kol bus pareikalauta kitos reikšmės, tada ji tęs vykdymą ir pateiks kitą reikšmę. Šis procesas tęsiasi tol, kol generatoriaus funkcija baigia vykdyti arba susiduria su grąžinimo teiginiu.
Štai pavyzdys, kaip tai galima padaryti:
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]> |
>
>Išvestis
42 hello [1, 2, 3]>
Laiko sudėtingumas : O(1), nes atlieka tik pastovų skaičių operacijų (išeigos), nepriklausomai nuo įvesties dydžio.
Pagalbinė erdvė: O(1), nes jis bet kuriuo metu atmintyje išsaugo tik pastovų skaičių kintamųjų (suteikiamų verčių).
Nuoroda: http://stackoverflow.com/questions/354883/how-do-you-return-multiple-values-in-python