top of page

Decoradores

En Python tenemos lo que se conoce como decoradores, con ellos seremos capaces de reducir las líneas de código, además, tendremos un código más legible.


Una función puede ser almacenada en una variable, y, puede ser usada como argumento de otra función.


Un decorador es una función que devuelve otra función, cuando estamos trabajando con un decorador trabajamos como mínimo con tres funciones.


Vamos a tener tres funciones, a,b,c, donde “a” recibe como parámetro “b”, y, da salida como “c”.


Un decorador lo podemos usar para una o más funciones.


Veamos un ejemplo simple, en la línea 6, vamos a crear una función, llamada multi, y, en la siguiente línea, imprimimos la multiplicación de 2 por 3.

ree

En la línea 1, vamos a crear el decorador, se crea igual que una función, pero, debemos de pasar un parámetro.

ree

En la siguiente línea, imprimimos el siguiente mensaje:

ree

En la siguiente línea, ponemos el parámetro.

ree

De esta manera, modificamos una función sin tener que modificar sus líneas.


¿Cómo llamamos a un decorador?

Una línea encima de la función que vamos a decorar, ponemos el símbolo de arroba (@) seguido de la función decoradora.

ree

Ejecutamos, y, lo primero que vemos es el mensaje, después, la operación.


Cuando llamamos al decorador, el parámetro función vale en este caso la función multi.


Dentro de la función decorador, después del parámetro voy a poner el siguiente mensaje:

ree

Al ejecutar nos sale el primer mensaje, seguido del cálculo, y, del último mensaje.

ree

He añadido una nueva función llamada división, que realiza una división, y, también he llamado al decorador.

ree

Al ejecutar, aparecen los mensajes en ambas operaciones.


Pero, hemos usado las funciones multi y división sin haber pasado parámetros, pues, vamos a ver como lo hacemos, vamos a función multi, y, añadimos dos parámetros.

ree

Añadimos los mismos parámetros a la función división.

ree

Cambiamos el print de la función suma por valor1*valor2, y, de la función división por valor1/valor2.

ree

Ahora, debemos de indicar al decorador que tenemos parámetros que usar, para ello, debajo de la declaración de la función decorador, creamos otra función, y, pasamos los mismos parámetros que a la función multi y división.

ree

En el parameto funcion, añadimos los mismos parámetros.

ree

En la siguiente línea, retornamos interior.

ree

Añadimos los parámetros valor1 y valor2 a las funciones multi y división.


En la línea print de la función multi, ponemos valor1*valor2, y, en el print de la función división, ponemos valor1/valor2.


Como ultimas líneas, llamamos a la función multi, pasando el valor para los parámetros, lo mismo para la función división.

ree

Probemos.

ree

Pero, que ocurre si queremos pasar otro parámetro, pues, que debemos de añadirlos, cosa que puede ser un poco pesada, pues, vamos a usar la declaración *args, esto quiere decir que acepta cualquier numero de parámetros, lo debemos de poner en la función interior, y, en el parámetro.

ree

Voy a añadir un parámetro más a la función multi, y, en la llamada a la función multi, añadimos el valor para dicho parámetro.

ree

Si ejecutamos vemos que el calculo de realiza sin problemas.


Voy a modificar la llamada a multi, como sigue:

ree

Donde estamos usando una palabra clave, si ejecutamos nos devuelve un error de Obtuve un argumento de palabra clave inesperado.


Por lo que ya no nos sirve la secuencia args, debemos de añadir *kwargs, como sigue:

ree

Ejecutamos y ya nos devuelve el resultado.



Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page