Saltar a contenido

3. ¿Qué es un decorador?

Los decoradores son funciones que toman otra función como argumento y anidan una nueva función para agregarle código extra sin alterar la existente.

En el siguiente ejemplo, puedes ver la estructura general de una función decoradora.

TIP

Si alguna vez has visto @, estás ante un decorador.


Image

Código Python 👇

def decorador(f):

    def funcion_nueva():
        print('Funcionalidad extra')
        f()
    return funcion_nueva

@decorador
def funcion_inicial():
    print('Funcionalidad inicial')

funcion_inicial()

🕵️ Analicemos estos elementos en más detalle:

  • Esta es la función_inicial que el @decorador va tomar como referencia.

    @decorador
    def funcion_inicial():
        print('Funcionalidad inicial')
    
    funcion_inicial()
    

  • Esta es una función intermediaria que va hacer la decoradoración def decorador. El nombre de la función hace referencia a @decorador. Toma (f) como argumento para invocar f() más adelante dentro de la función_nueva() que va ir anidada.

def decorador(f):
    def funcion_nueva():
        print('Funcionalidad extra')
        f()
    return funcion_nueva
  • Si ejecutamos el código, podemos ver el siguiente resultado:

Funcionalidad extra
Funcionalidad inicial