El concepto de decoradores en Python es una solución elegante para ampliar la funcionalidad de funciones o métodos sin modificar directamente. Esta poderosa técnica te permite añadir código adicional para, por ejemplo, habilitar registros o modificar el comportamiento de funciones existentes. En esta guía, aprenderás cómo funcionan los decoradores y cómo puedes utilizarlos de manera efectiva.
Principales conclusiones
Los decoradores son funciones que aceptan otra función como argumento y devuelven una nueva función. Se utilizan con frecuencia para:
- Modificar el comportamiento de funciones.
- Registrar funciones.
- Ampliar métodos de clases.
Guía paso a paso
¿Qué es un decorador?
Comencemos con la definición de un decorador simple. Un decorador es esencialmente una función que recibe otra función y la amplía o modifica.

Comienza con un ejemplo
Supongamos que deseas ampliar la funcionalidad de una función existente. Crea una función llamada LogDecorator que simplemente añada información de registro. Pasas a esta función la función a decorar como parámetro.
Dentro del decorador
Dentro de tu función decorador, defines una segunda función que gestiona el registro. Esta función llamará a la función original y devolverá sus resultados.
Finalizando la función decorador
Debes diseñar el decorador para que devuelva la función interna en lugar de llamarla inmediatamente. Esto mantiene la función original sin cambios y puede ser llamada en cualquier momento.
Aplicación del decorador
Ahora puedes aplicar el decorador a una función. Toma, por ejemplo, una función simple que suma, que suma dos números. Puedes declarar LogDecorator antes de la función.

Usar la función
Invoca la función decorada y observa qué resultado se devuelve. El decorador se activará automáticamente y realizará el registro, mientras que la función original seguirá funcionando.

Múltiples decoradores
Lo bueno de los decoradores es que puedes aplicar varios decoradores a una función. Por ejemplo, si creas un SquareDecorator que eleva al cuadrado el resultado, también puedes aplicar este decorador a la misma función.

Orden de los decoradores
Ten en cuenta el orden en que se colocan los decoradores. El decorador que está más cerca de la función se ejecuta primero. Si, por ejemplo, colocas SquareDecorator antes de LogDecorator, el resultado se elevará al cuadrado primero y luego se registrará.

Propósito de los decoradores
Los decoradores no solo son una característica interesante, sino que también resuelven problemas en el desarrollo de software. Te permiten modularizar funciones y ayudan a evitar código repetido. Esto hace que tu código sea más limpio y fácil de mantener.

Resumen – Entender y aplicar decoradores en Python
Los decoradores son un concepto poderoso en Python que te ayuda a ampliar y modificar funciones sin tocar su código directamente. Al aplicar decoradores, puedes hacer que tu código sea más flexible y claro.
Preguntas frecuentes
¿Qué son los decoradores en Python?Los decoradores son funciones que aceptan otra función como entrada y la amplían o modifican.
¿Cómo puedo definir un decorador?Definirás una función que toma otra función como argumento y devuelve una nueva función.
¿Por qué debería usar decoradores?Los decoradores ayudan a evitar código repetido, mejoran la modularidad y la legibilidad de tu código.
¿Puedo aplicar múltiples decoradores a una función?Sí, puedes aplicar múltiples decoradores a una función, siendo importante el orden.
¿Qué sucede si cambio el orden de los decoradores?La ejecución de los decoradores se realiza en el orden en que están declarados. Esto afecta el resultado final.