En C, devolver múltiples valores de retorno de una función es bastante tedioso, pero en Python, es muy fácil de hacer.
Retorno separado por comas
En Python, puede simplemente devolver una lista separada por comas de cadenas o números.
Como ejemplo, defina una función que sólo devuelva una cadena y un número como se muestra a continuación, con cada uno separado por una coma después del retorno.
def test(): return 'abc', 100
En Python, los valores separados por comas se consideran tuplas sin paréntesis, excepto cuando es sintácticamente necesario. Por lo tanto, la función del ejemplo anterior devolverá una tupla con cada valor como elemento.
Es la coma la que crea la tupla, no los corchetes. Los corchetes pueden omitirse, excepto en el caso de las tuplas vacías o cuando sea necesario para evitar la ambigüedad sintáctica.
Built-in Types — Python 3.10.0 Documentation
El tipo del valor de retorno es una tupla.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Cada elemento será del tipo definido por la función.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Error si se especifica un índice que excede el número de valores de retorno definidos.
# print(result[2]) # IndexError: tuple index out of range
Se puede desempacar y asignar múltiples valores de retorno a variables separadas.
a, b = test() print(a) # abc print(b) # 100
Lo mismo ocurre si quiere especificar tres o más valores de retorno en lugar de sólo dos.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Devuelve una lista.
[]
Si lo encierra con esto, el valor de retorno será una lista en lugar de una tupla.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>