Kako vratiti više povratnih vrijednosti u Python funkciji

Poslovanje

U C-u je vraćanje više povratnih vrijednosti iz funkcije prilično zamorno, ali u Pythonu je to vrlo jednostavno za napraviti.

Povratak odvojen zarezima

U Pythonu možete jednostavno vratiti popis nizova ili brojeva odvojenih zarezima.

Kao primjer, definirajte funkciju koja vraća samo niz i broj kao što je prikazano u nastavku, pri čemu je svaki odvojen zarezom nakon povrata.

def test():
    return 'abc', 100

U Pythonu se vrijednosti odvojene zarezima smatraju torkama bez zagrada, osim ako je to sintaktički neophodno. Stoga će funkcija u gornjem primjeru vratiti tuple sa svakom vrijednošću kao elementom.

Zarez je taj koji stvara torku, a ne okrugle zagrade. Okrugle zagrade mogu se izostaviti, osim u slučaju praznih torki ili kada je potrebno da se izbjegne sintaktička dvosmislenost.
Built-in Types — Python 3.10.0 Documentation

Tip povratne vrijednosti je tuple.

result = test()

print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>

Svaki element bit će tipa definiranog funkcijom.

print(result[0])
print(type(result[0]))
# abc
# <class 'str'>

print(result[1])
print(type(result[1]))
# 100
# <class 'int'>

Pogreška ako navedete indeks koji premašuje broj povratnih vrijednosti koji ste definirali.

# print(result[2])
# IndexError: tuple index out of range

Može se raspakirati i višestruke povratne vrijednosti mogu se dodijeliti zasebnim varijablama.

a, b = test()

print(a)
# abc

print(b)
# 100

Isto vrijedi ako želite navesti tri ili više povratnih vrijednosti umjesto samo dvije.

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

Vraća popis.

[]Ako ga priložite s ovim, povratna vrijednost bit će popis umjesto torke.

def test_list():
    return ['abc', 100]

result = test_list()

print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>