Python es uno de los lenguajes de programación más usados hoy. Algunas de sus ventajas incluyen su sintaxis, versatilidad, escalabilidad o facilidad de mantenimiento, entre otras cosas. Dentro del trabajo que se puede hacer con este código, una de las características distintivas son los decoradores. Se trata de una de las más usadas por los programadores ya que se pueden reducir las líneas de código que estén duplicadas. En este artículo vamos a ver qué son y como se usan los decoradores en Python.

Esto solo es la punta del iceberg en lo que a programación en Python se refiere. Se trata de un lenguaje sencillo de aprender y complicado de masterizar. Por eso es importante aprender y practicar, ya sea de manera autodidacta o mediante cursos de especialización. De momento, vamos a ver qué son los decoradores en Python y cómo se usan para mejorar la legibilidad y el testo en este código.

¿Qué son los decoradores en Python y para qué se usan?

En Python los decoradores son una manera elegante de extender o modificar el comportamiento de funciones y métodos sin cambiar el código fuente. Se trata de una función que toma como referencia otra función y extiende sus atributos y métodos, es decir, extiende el comportamiento de la función original simplificando la sintaxis y encapsulando sus funcionalidades.

Los decoradores permiten encapsular funcionalidades adicionales alrededor de funciones existentes de manera fácil y reutilizable. 

Así, nos encontramos con que los decoradores en Python son bastante usados. Sobre todo, se trabaja con ellos para tareas relacionadas con el registro de funciones, en la validación de parámetros o en la medición del tiempo de ejecución. Se usan para tener un código más legible y con mayor facilidad para el testeo.

Creando tu primer decorador en Python

Ahora que ya sabes para qué sirven y qué son los decoradores en Python, vamos a ver cómo hacer uno de manera simple. Para ello, veremos paso a paso, qué es lo que tienes que considerar. Lo primero que debes saber es que crear un decorador implica definir una función que toma otra como argumento y devuelve una completamente nueva. Para hace esto hay que seguir estos pasos:

  • Define la función que actúa como decorador mediante el nombre que quieras, normalmente se usa ‘decorador’
  • Crea la función interna dentro del decorador que se llama ‘wrapper’. Esta será la que envuelva la función original.
  • Personaliza el wrapper y agrega la lógica adicional que necesites. Esto puede ser, ejecutar el código antes o después de hacer la llamada a la función o modificar la entrada o manipulación del resultado.
  • Llama a la función original desde wrapper ya que es lo que garantiza que la funcionalidad original se ejecute
  • Devuelve el wrapper desde la función del decorador para que este funcione correctamente
  • Aplica el decorador usando @ seguido del nombre que le hayas dado justo encima de la definición de la función.

Crear un decorador en Python es una forma efectiva de reutilizar código y modularizar funcionalidades comunes. Esto mejora la legibilidad del mismo y hace que sea mucho más sencillo su mantenimiento y el acceso y lectura de otros desarrolladores.

Decoradores con parámetros en Python

A los decoradores en Python también se le pueden añadir parámetros. Con esto, ganan en flexibilidad y permite adaptar sus funcionalidades según las necesidades específicas en distintos contextos. Esto puede llegar a ser útil para ajustar la configuración el comportamiento o cualquier otro aspecto del decorador, dependiendo de los valores que se le proporcionen como parámetros.

Los decoradores con parámetros son una extensión de los básicos. Dan una mayor capacidad de personalización y adaptabilidad en el desarrollo.

Para crear un decorador con parámetros hay que, en primer lugar, definir una función exterior que adapte los parámetros que se quieren usar en el decorador. Esta devuelve el wrapper que será el verdadero decorador. Después de eso, es necesario definir este wrapper, personalizar su lógica y asegurarse de que la función exterior devuelva la interior. Tras todo eso, se aplica la @ para crear el decorador con parámetros que envuelva a toda la función.

Mejores prácticas y uso avanzado de decoradores

A medida que avanzas en la programación en Python vas aprendiendo nuevas técnicas para hacer que tu código funcione mejor y sea más legible. Profundizando en el uso de decoradores en Python, nos encontramos con que existen una serie de buenas prácticas que debes conocer:

  • Documentar tus decoradores. Documentar el código a medida que se hace es algo fundamental, en Python y cualquier otro lenguaje de programación. En lo que se refiere a los decoradores, añadir comentarios claros va a hacer que otros desarrolladores puedan acceder y entender mejor lo que has hecho, para que son y para que sirven los decoradores que has usado.
  • Usar functools.wraps. Cuando se crean decoradores es recomendable usar functools.wraps, una función que sirve para definirlos y cuyo propósito es mantener la información que contiene la función original cuando está se envuelve con un decorador. Con este elemento se facilita la depuración y el análisis.
  • Explorar decoradores predefinidos. Un decorador predefinido es aquellos que están integrados e incorporados dentro de Python. Se usan para crear patrone de diseño concretos o desarrollar funcionalidades específicas. Este tipo de elementos hacen que la sintaxis sea más limpia y elegante. Debes familiarizarte con su uso y emplearlos cuando sea adecuado.

¡Conviértete en programador Python!

Dominar los decoradores en Python hace que conozcas una de las herramientas más importantes de cara a mejorar la legibilidad y el testeo de tu código. A medida que avanzas en tu viaje por Python, vas a experimentar y a trabajar con diversas características de este potente lenguaje de programación. Para seguir profundizando, como decíamos al principio, puedes optar por ser autodidacta y crecer por tu cuenta apoyado en la gran comunidad que tiene Python, o optar por formarte con un curso de Programación en Python en el que te ayudar a ir de cero a cien en menos tiempo.

Esto último es lo que te ofrecemos en Tokio School, una formación de calidad impartida por profesionales y expertos en Python en la que vas a adquirir todos los conocimientos y habilidades que necesitas para destacar. ¡Conviértete en un programador Python experto y lleva tus habilidades al siguiente nivel! Con Tokio School es posible, ponte en contacto ahora para saber más y resolver todas tus dudas.

Bibliografía