Qué son decoradores en Python: concepto clave

Clase 33 de 49Curso Práctico de Python: Creación de un CRUD

Resumen

Los decoradores en Python son una herramienta clave para dar el salto de tareas repetitivas a código más limpio y reutilizable. Aquí entenderás qué son, por qué importan y cómo se relacionan con los paradigmas de programación que Python admite con flexibilidad.

¿Qué cambia del enfoque procedural a nuevos paradigmas en Python?

En el proyecto de clientes se trabajó con un script que escribe a disco y permite añadir, modificar y borrar registros. Ese estilo es programación por procesos o procedural programming, una forma válida de organizar lógica cuando se construyen tareas paso a paso.

  • Un script centralizado que gestiona clientes y persiste en disco.
  • Estilo: programación por procesos (procedural programming).
  • Los paradigmas de programación no dependen exclusivamente del lenguaje.
  • Java se concibió como orientado a objetos.
  • Python acepta varios paradigmas: orientado a objetos y funcional.
  • Próximo objetivo: avanzar a temas medio–avanzados con decoradores.

¿Qué es un decorador en Python y para qué sirve?

Un decorador es una función que envuelve a otra función para modificar su comportamiento sin cambiar su código interno. La idea es simple, pero puede tomar un poco asimilarla al principio: permite ejecutar trabajo antes y después de la función original.

  • Definición práctica: una función que recibe otra función y devuelve una nueva función.
  • Trabajo previo/posterior: validaciones, registros, transformaciones.
  • Caso de uso mencionado: verificar acceso solicitando una contraseña.
  • Meta: proteger datos sensibles sin tocar cada función por separado.
  • Beneficio clave: reutilización de código y separación de responsabilidades.

¿Cómo funciona el patrón wrapper y por qué las funciones son first-class citizens?

La estructura típica descrita: un decorador (ejemplo nombrado "lowercase") recibe una función, define internamente otra función llamada wrapper, ejecuta la función recibida para obtener un resultado y devuelve ese resultado. Aunque ese ejemplo base no hace cambios, el espacio antes y después de la llamada permite introducir lógica útil.

  • La función decoradora recibe otra función como parámetro.
  • Define una función interna: wrapper.
  • Llama a la función original y captura su resultado.
  • Devuelve el resultado, con posibilidad de agregar pasos alrededor.
  • Fundamento en Python: las funciones son ciudadanos de primera clase (first-class citizens), es decir, pueden pasarse como parámetros y retornarse desde otras funciones.
  • Los decoradores se apoyan en este concepto de forma fundamental.

¿Te gustaría compartir en qué parte de tu código aplicarías un decorador para validar acceso o registrar eventos?