C-ben egy függvényből több visszatérési értéket visszaadni elég fárasztó, de Pythonban ez nagyon könnyen megoldható.
Visszatérés vesszővel elválasztva
Pythonban egyszerűen visszaadhatod a karakterláncok vagy számok vesszővel elválasztott listáját.
Példaként definiáljon egy olyan függvényt, amely csak egy karakterláncot és egy számot ad vissza az alábbiak szerint, a visszatérés után vesszővel elválasztva.
def test(): return 'abc', 100
A Pythonban a vesszővel elválasztott értékek zárójelek nélküli kötegeknek tekintendők, kivéve, ahol ez szintaktikailag szükséges. Ezért a fenti példában szereplő függvény egy olyan tuple-t fog visszaadni, amelynek minden egyes értéke egy elem.
A vessző hozza létre a tuple-t, nem a kerek zárójelek. A kerek zárójelek elhagyhatók, kivéve az üres tuplik esetében, vagy ha a szintaktikai félreérthetőség elkerülése érdekében szükséges.
Built-in Types — Python 3.10.0 Documentation
A visszatérési érték típusa egy tuple.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Minden elem a függvény által meghatározott típusú lesz.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Hiba, ha olyan indexet ad meg, amely meghaladja a megadott visszatérési értékek számát.
# print(result[2]) # IndexError: tuple index out of range
Kicsomagolható, és több visszatérési értéket külön változókhoz lehet rendelni.
a, b = test() print(a) # abc print(b) # 100
Ugyanez vonatkozik arra az esetre is, ha kettő helyett három vagy több visszatérési értéket szeretne megadni.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Visszaad egy listát.
[]
Ha ezzel zárja be, a visszatérési érték egy lista lesz tuple helyett.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>