V jazyku C je vrátenie viacerých návratových hodnôt z funkcie pomerne zdĺhavé, ale v jazyku Python je to veľmi jednoduché.
Vrátiť oddelené čiarkami
V jazyku Python môžete jednoducho vrátiť zoznam reťazcov alebo čísel oddelených čiarkou.
Ako príklad definujte funkciu, ktorá vracia iba reťazec a číslo, ako je znázornené nižšie, pričom každé z nich je oddelené čiarkou za návratom.
def test(): return 'abc', 100
V jazyku Python sa hodnoty oddelené čiarkou považujú za tuply bez zátvoriek, okrem prípadov, keď je to syntakticky nevyhnutné. Preto funkcia vo vyššie uvedenom príklade vráti tuple s každou hodnotou ako prvkom.
Čiarka je to, čo vytvára tuple, nie okrúhle zátvorky. Okrúhle zátvorky sa môžu vynechať, okrem prípadov prázdnych tuplov alebo ak je to potrebné na zabránenie syntaktickej nejednoznačnosti.
Built-in Types — Python 3.10.0 Documentation
Typom návratovej hodnoty je tuple.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Každý prvok bude mať typ definovaný funkciou.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Chyba, ak zadáte index, ktorý presahuje počet definovaných návratových hodnôt.
# print(result[2]) # IndexError: tuple index out of range
Možno ho rozbaliť a viacero návratových hodnôt možno priradiť samostatným premenným.
a, b = test() print(a) # abc print(b) # 100
To isté platí, ak chcete zadať tri alebo viac návratových hodnôt namiesto dvoch.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Vracia zoznam.
[]
Ak ho uzavriete pomocou tohto, návratová hodnota bude zoznam namiesto tuple.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>