Imprime el tipo de devolución
Estás depurando un paquete en el que has estado trabajando con tus amigos. Algo raro está ocurriendo con los datos devueltos por una de tus funciones, pero ni siquiera estás seguro de qué función está causando el problema. Sabes que a veces pueden colarse errores en tu código cuando esperas que una función devuelva una cosa, y devuelve otra distinta. Por ejemplo, si esperas que una función devuelva una matriz numpy, pero devuelve una lista, puedes obtener un comportamiento inesperado. Para asegurarte de que no es esto lo que está causando problemas, decides escribir un decorador, print_return_type()
, que imprimirá el tipo de la variable que se devuelve en cada llamada de cualquier función que esté decorando.
Este ejercicio forma parte del curso
Escribir funciones en Python
Instrucciones de ejercicio
- Crea una función anidada,
wrapper()
, que se convertirá en la nueva función decorada. - Llama a la función decorada.
- Devuelve la nueva función decorada.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
def print_return_type(func):
# Define wrapper(), the decorated function
____ ____(____, ____):
# Call the function being decorated
result = ____(____, ____)
print('{}() returned type {}'.format(
func.__name__, type(result)
))
return result
# Return the decorated function
return ____
@print_return_type
def foo(value):
return value
print(foo(42))
print(foo([1, 2, 3]))
print(foo({'a': 42}))