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