Declaración de retorno de Python

La declaración de retorno de Python se utiliza para devolver valores desde la función. Podemos usar la declaración de retorno solo en una función. No se puede utilizar fuera de una función de Python.

Función de Python sin declaración de retorno

Cada función en Python devuelve algo. Si la función no tiene ninguna declaración de retorno, devuelve None.

def print_something(s):
    print('Printing::', s)


output = print_something('Hi')

print(f'A function without return statement returns {output}')

Salida:

Python Function Without Return Statement

Ejemplo de Declaración de Retorno de Python

Podemos realizar alguna operación en una función y devolver el resultado al llamante utilizando la declaración de retorno.

def add(x, y):
    result = x + y
    return result


output = add(5, 4)
print(f'Output of add(5, 4) function is {output}')

Salida:

Python Return Example

Declaración de retorno de Python con expresión

También podemos tener expresiones en la declaración de retorno. En ese caso, la expresión se evalúa y se devuelve el resultado.

def add(x, y):
    return x + y


output = add(5, 4)
print(f'Output of add(5, 4) function is {output}')

Salida:

Python Return Statement With Expression

Python devuelve booleano

Veamos un ejemplo donde devolveremos el valor booleano del argumento de una función. Utilizaremos la función bool() para obtener el valor booleano del objeto.

def bool_value(x):
    return bool(x)


print(f'Boolean value returned by bool_value(False) is {bool_value(False)}')
print(f'Boolean value returned by bool_value(True) is {bool_value(True)}')
print(f'Boolean value returned by bool_value("Python") is {bool_value("Python")}')

Salida:

Python Return Boolean

Python devuelve cadena

Veamos un ejemplo donde nuestra función devolverá la representación en cadena del argumento. Podemos utilizar la función str() para obtener la representación en cadena de un objeto.

def str_value(s):
    return str(s)


print(f'String value returned by str_value(False) is {str_value(False)}')
print(f'String value returned by str_value(True) is {str_value(True)}')
print(f'String value returned by str_value(10) is {str_value(10)}')

Salida:

Python Return String

Python devuelve tupla

A veces queremos convertir una serie de variables en una tupla. Veamos cómo escribir una función para devolver una tupla a partir de un número variable de argumentos.

def create_tuple(*args):
    my_list = []
    for arg in args:
        my_list.append(arg * 10)
    return tuple(my_list)


t = create_tuple(1, 2, 3)
print(f'Tuple returned by create_tuple(1,2,3) is {t}')

Salida:

Python Function Return Tuple

Lectura adicional: Python *args y **kwargs

Función de Python que devuelve otra función

También podemos devolver una función desde la declaración de retorno. Esto es similar a Currying, que es la técnica de traducir la evaluación de una función que toma múltiples argumentos en la evaluación de una secuencia de funciones, cada una con un solo argumento.

def get_cuboid_volume(h):
    def volume(l, b):
        return l * b * h

    return volume


volume_height_10 = get_cuboid_volume(10)
cuboid_volume = volume_height_10(5, 4)
print(f'Cuboid(5, 4, 10) volume is {cuboid_volume}')

cuboid_volume = volume_height_10(2, 4)
print(f'Cuboid(2, 4, 10) volume is {cuboid_volume}')

Salida:

Python Return Function

Función de Python que devuelve una función externa

También podemos devolver una función que está definida fuera de la función con la declaración de retorno.

def outer(x):
    return x * 10


def my_func():
    return outer


output_function = my_func()
print(type(output_function))

output = output_function(5)
print(f'Output is {output}')

Salida:

Python Function Return Outer Function

Python devuelve múltiples valores

Si deseas devolver varios valores desde una función, puedes devolver una tupla, una lista, o un objeto diccionario según tus necesidades. Sin embargo, si debes devolver un gran número de valores, usar una secuencia es una operación que consume demasiados recursos. En este caso, podemos utilizar la palabra clave \texttt{yield} para devolver múltiples valores uno por uno.

def multiply_by_five(*args):
    for arg in args:
        yield arg * 5


a = multiply_by_five(4, 5, 6, 8)

print(a)
# mostrando los valores
for i in a:
    print(i)

Salida:

Python Return vs Yield

Resumen

La declaración de retorno en Python se utiliza para devolver la salida de una función. Aprendimos que también podemos devolver una función desde otra función. Además, las expresiones se evalúan y luego el resultado se devuelve desde la función.

Puedes revisar el script completo de Python y más ejemplos en nuestro Repositorio en GitHub.

Source:
https://www.digitalocean.com/community/tutorials/python-return-statement