V jazyce C je vracení více návratových hodnot z funkce poměrně zdlouhavé, ale v jazyce Python je to velmi snadné.
Návrat oddělený čárkami
V jazyce Python můžete jednoduše vrátit seznam řetězců nebo čísel oddělených čárkou.
Jako příklad definujte funkci, která vrací pouze řetězec a číslo, jak je uvedeno níže, přičemž za návratem se oddělí čárkou.
def test(): return 'abc', 100
V jazyce Python jsou hodnoty oddělené čárkou považovány za tuply bez závorek, s výjimkou případů, kdy je to syntakticky nutné. Proto funkce ve výše uvedeném příkladu vrátí tuple s každou hodnotou jako prvkem.
Čárku tvoří tuple, nikoliv kulaté závorky. Kulaté závorky lze vynechat, s výjimkou prázdných tuplů nebo případů, kdy je to nutné k zamezení syntaktické nejednoznačnosti.
Built-in Types — Python 3.10.0 Documentation
Typem návratové hodnoty je tuple.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Každý prvek bude mít typ definovaný funkcí.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Chyba, pokud zadáte index, který přesahuje počet zadaných návratových hodnot.
# print(result[2]) # IndexError: tuple index out of range
Lze jej rozbalit a více návratových hodnot přiřadit samostatným proměnným.
a, b = test() print(a) # abc print(b) # 100
Totéž platí, pokud chcete zadat tři nebo více návratových hodnot namísto pouhých dvou.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Vrací seznam.
[]
Pokud jej uzavřete tímto, bude návratovou hodnotou místo tuple seznam.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>