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