Como devolver varios valores de retorno nunha función de Python

Negocios

En C, devolver varios valores de retorno dunha función é bastante tedioso, pero en Python, é moi sinxelo de facer.

Retorno separado por comas

En Python, pode simplemente devolver unha lista de cadeas ou números separados por comas.

Como exemplo, define unha función que só devolve unha cadea e un número como se mostra a continuación, separando cada un por coma despois do retorno.

def test():
    return 'abc', 100

En Python, os valores separados por comas considéranse tuplas sen parénteses, agás cando sexa sintácticamente necesario. Polo tanto, a función do exemplo anterior devolverá unha tupla con cada valor como elemento.

É a coma a que crea a tupla, non os corchetes. Pódense omitir os corchetes, agás no caso de tuplas baleiras ou cando sexa necesario para evitar ambigüidades sintácticas.
Built-in Types — Python 3.10.0 Documentation

O tipo de valor de retorno é unha tupla.

result = test()

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

Cada elemento será do tipo definido pola función.

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

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

Produciuse un erro se especifica un índice que supera o número de valores de retorno que definiu.

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

Pódese desempaquetar e asignar varios valores de retorno a variables separadas.

a, b = test()

print(a)
# abc

print(b)
# 100

O mesmo aplícase se quere especificar tres ou máis valores de retorno en lugar de só dous.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Devolve unha lista.

[]Se o encerra con isto, o valor de retorno será unha lista en lugar dunha tupla.

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

result = test_list()

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