Tratando el tema de las funciones decoradoras, se ejecuta la función sin llamarla.
Código:
def funcion_decoradora(funcion_parametro): def funcion_interior(): # Acciones adicionales que decoran print("Vamos a realizar un cálculo:") funcion_parametro() # Acciones adicionales que decoran print("Hemos terminado el cálculo") return funcion_interior() @ funcion_decoradora def suma(): print(15+20) @ funcion_decoradora def resta(): print(30-10)
El resultado es el siguiente:
Vamos a realizar un cálculo: 35 Hemos terminado el cálculo Vamos a realizar un cálculo: 20 Hemos terminado el cálculo
Sin embargo, si mi código es el siguiente:
def funcion_decoradora(funcion_parametro): def funcion_interior(): # Acciones adicionales que decoran print("Vamos a realizar un cálculo:") funcion_parametro() # Acciones adicionales que decoran print("Hemos terminado el cálculo") return funcion_interior() @ funcion_decoradora def suma(): print(15+20) @ funcion_decoradora def resta(): print(30-10) suma() resta()
El resultado es:
Vamos a realizar un cálculo: 35 Hemos terminado el cálculo Vamos a realizar un cálculo: 20 Hemos terminado el cálculo Traceback (most recent call last): File "/practica_decoradores.py", line 28, in <module> suma() TypeError: 'NoneType' object is not callable
¿Alguien sabría porque ocurre esto? Muchas gracias de antemano Saludos