Hogyan adjunk vissza több visszatérési értéket egy Python függvényben?

Üzleti

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