Kuinka palauttaa useita paluuarvoja Python-funktiossa?

liiketoiminta

C:ssä useiden paluuarvojen palauttaminen funktiosta on melko työlästä, mutta Pythonissa se on erittäin helppoa.

Palautus erotettuna pilkuilla

Pythonissa voit yksinkertaisesti palauttaa merkkijonojen tai numeroiden pilkulla erotetun luettelon.

Määrittele esimerkiksi funktio, joka palauttaa vain merkkijonon ja numeron alla esitetyllä tavalla siten, että molemmat erotetaan toisistaan pilkulla palautuksen jälkeen.

def test():
    return 'abc', 100

Pythonissa pilkulla erotettuja arvoja pidetään tupleina ilman sulkuja, paitsi jos se on syntaktisesti välttämätöntä. Näin ollen yllä olevan esimerkin funktio palauttaa tuplen, jossa jokainen arvo on elementtinä.

Pilkku luo tuplan, eivät pyöreät sulkeet. Pyöreät sulkeet voidaan jättää pois, paitsi jos kyseessä on tyhjä tupletti tai jos se on tarpeen syntaktisen epäselvyyden välttämiseksi.
Built-in Types — Python 3.10.0 Documentation

Paluuarvon tyyppi on tuple.

result = test()

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

Jokainen elementti on funktion määrittelemää tyyppiä.

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

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

Virhe, jos määrität indeksin, joka ylittää määrittelemiesi palautusarvojen määrän.

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

Se voidaan purkaa ja useita paluuarvoja voidaan määrittää erillisiin muuttujiin.

a, b = test()

print(a)
# abc

print(b)
# 100

Sama pätee, jos haluat määrittää kolme tai useampia palautusarvoja kahden sijaan.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Palauttaa listan.

[]Jos ympäröit sen tällä, paluuarvo on lista tuplen sijasta.

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

result = test_list()

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