Kuidas tagastada mitu tagastusväärtust Pythoni funktsioonis

Äri

C-keeles on mitme tagastusväärtuse tagastamine funktsioonist üsna tüütu, kuid Pythonis on seda väga lihtne teha.

Tagastamine komadega eraldatuna

Pythonis saate lihtsalt tagastada komaga eraldatud stringide või numbrite loendi.

Defineerige näiteks funktsioon, mis tagastab ainult stringi ja arvu, nagu allpool näidatud, kusjuures mõlemad on eraldatud komaga pärast tagastust.

def test():
    return 'abc', 100

Pythonis loetakse komadega eraldatud väärtusi ilma sulgudeta tupliteks, välja arvatud juhul, kui see on süntaktiliselt vajalik. Seetõttu tagastab ülaltoodud näites esitatud funktsioon tupli, mille iga väärtus on element.

See on koma, mis loob tupli, mitte ümmargused sulgud. Ümarad sulgud võib ära jätta, välja arvatud tühjade tuplite puhul või kui see on vajalik süntaktilise ebaselguse vältimiseks.
Built-in Types — Python 3.10.0 Documentation

Tagastusväärtuse tüüp on tupel.

result = test()

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

Iga element on funktsiooni poolt määratletud tüüpi.

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

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

Viga, kui määrate indeksi, mis ületab määratletud tagastusväärtuste arvu.

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

Seda saab lahti pakkida ja mitu tagastusväärtust saab määrata eraldi muutujatele.

a, b = test()

print(a)
# abc

print(b)
# 100

Sama kehtib ka juhul, kui soovite määrata kolme või enamat tagastusväärtust, mitte ainult kahte.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Tagastab nimekirja.

[]Kui lisate selle, siis on tagastusväärtus loend, mitte tupel.

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

result = test_list()

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