Hoe meerdere terugkeerwaarden in een Python-functie teruggeven

Bedrijf

In C is het teruggeven van meerdere return-waarden van een functie nogal omslachtig, maar in Python is het heel gemakkelijk.

Terugkeren gescheiden door komma's

In Python kan je eenvoudigweg een door komma's gescheiden lijst van tekenreeksen of getallen teruggeven.

Definieer bijvoorbeeld een functie die alleen een tekenreeks en een getal teruggeeft, zoals hieronder getoond, met elk gescheiden door een komma na de terugkeer.

def test():
    return 'abc', 100

In Python worden door komma's gescheiden waarden beschouwd als tupels zonder haakjes, behalve waar syntactisch noodzakelijk. Daarom zal de functie in het bovenstaande voorbeeld een tupel teruggeven met elke waarde als een element.

Het is de komma die de tupel creëert, niet de ronde haakjes. Ronde haakjes kunnen worden weggelaten, behalve in het geval van lege tupels of wanneer dat nodig is om syntactische dubbelzinnigheid te vermijden.
Built-in Types — Python 3.10.0 Documentation

Het type van de terugkeerwaarde is een tupel.

result = test()

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

Elk element zal van het type zijn dat door de functie wordt gedefinieerd.

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

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

Fout als u een index opgeeft die groter is dan het aantal door u gedefinieerde retourwaarden.

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

Het kan worden uitgepakt en meerdere terugkeerwaarden kunnen worden toegewezen aan afzonderlijke variabelen.

a, b = test()

print(a)
# abc

print(b)
# 100

Hetzelfde geldt als u drie of meer retourwaarden wilt opgeven in plaats van slechts twee.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Geeft een lijst.

[]Als je het omsluit met dit, zal de terugkeerwaarde een lijst zijn in plaats van een tupel.

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

result = test_list()

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