logo

Kelių reikšmių grąžinimas Python

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