Jak vrátit více návratových hodnot ve funkci Pythonu

Podnikání

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'>