W3docs

python

¿Cómo se crea un decorador en Python?

Practica Tu Conocimiento

¿Cómo se crea un decorador en Python?

Explicación

Creando un Decorador en Python

Las decoraciones en Python son una herramienta poderosa que nos permite modificar el comportamiento de las funciones o de las clases. Los decoradores se crean definiendo una función que toma otra función como argumento. Vamos a detallarlo a continuación.

Un decorador es una función de orden de superior (una función que toma otra función y extiende el comportamiento de esta última sin modificarla explícitamente). Es una potente forma de cambiar y mejorar el comportamiento de una función o método existente, añadiendo cierta funcionalidad antes, después o incluso alrededor del código original.

Vamos a ver cómo podemos crear un decorador. Para comprender cómo funciona, se necesita saber que en Python, las funciones son ciudadanos de primera clase, es decir, pueden ser pasadas como argumentos a otras funciones, pueden ser devueltas por otras funciones y pueden ser definidas dentro de otras funciones.

def mi_decorador(funcion):
    def envoltorio():
        print("Esto se añade antes de la ejecución de la función.")
        funcion()
        print("Esto se añade después de la ejecución de la función.")
    return envoltorio

def mi_funcion():
    print("Esta es mi función.")
  
mi_funcion = mi_decorador(mi_funcion)

mi_funcion()

En este ejemplo, mi_decorador es una función de orden superior porque toma como argumento otra función, mi_funcion. Internamente define y luego devuelve otra función (envoltorio), que es una versión modificada de mi_funcion. Cuando ejecutas mi_funcion, ahora ves el comportamiento modificado: las líneas de los mensajes adicionales antes y después del mensaje de mi_funcion.

Debe notarse que la respuesta "Usando la sintaxis @decorator sobre una función" es a medias correcta. Esta sintaxis es un atajo para aplicar el decorador a una función, equivalente a mi_funcion = mi_decorador(mi_funcion). Pero solo aplica el decorador a la función, no lo crea.

Los decoradores pueden ser una forma poderosa y eficaz de agregar funcionalidades comunes a varias funciones y métodos en su código, lo que ayuda a adherirse al principio DRY (Don't Repeat Yourself) y hace que el código sea más fácil de mantener y de entender.

¿Quieres más? Haz el cuestionario completo de Python Fundamentos.

Iniciar Quiz