Com retornar diversos valors de retorn en una funció de Python

Negocis

En C, retornar diversos valors de retorn d’una funció és bastant tediós, però a Python, és molt fàcil de fer.

Tornar separat per comes

A Python, simplement podeu tornar una llista de cadenes o números separats per comes.

Com a exemple, definiu una funció que només retorni una cadena i un número com es mostra a continuació, amb cadascun separat per una coma després del retorn.

def test():
    return 'abc', 100

A Python, els valors separats per comes es consideren tuples sense parèntesis, excepte quan sigui necessari sintàcticament. Per tant, la funció de l’exemple anterior retornarà una tupla amb cada valor com a element.

És la coma la que crea la tupla, no els claudàtors. Els claudàtors es poden ometre, excepte en el cas de tuples buides o quan sigui necessari per evitar l’ambigüitat sintàctica.
Built-in Types — Python 3.10.0 Documentation

El tipus de valor de retorn és una tupla.

result = test()

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

Cada element serà del tipus definit per la funció.

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

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

Error si especifiqueu un índex que supera el nombre de valors de retorn que heu definit.

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

Es pot desempaquetar i es poden assignar diversos valors de retorn a variables separades.

a, b = test()

print(a)
# abc

print(b)
# 100

El mateix s’aplica si voleu especificar tres o més valors de retorn en lloc de només dos.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Retorna una llista.

[]Si ho adjunteu amb això, el valor de retorn serà una llista en lloc d’una tupla.

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

result = test_list()

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