Definición: Decorator es un patrón de diseño en Python. Es una función que toma otra función como argumento, agrega alguna funcionalidad sin modificarla y devuelve otra función.
Esto se llama usando "(@)" y se coloca antes de definir una función que queremos decorar.
sintaxis:
@Decorator Nombre
Definición de función
Para comprender los decoradores, necesitamos conocer los siguientes conceptos.
Las funciones son objetos de primera clase. Significa que se puede aprobar una función como argumento, se puede devolver desde otra función, se puede asignar a una variable, se puede definir en otra función. Para una mejor comprensión, vea los siguientes ejemplos.
Aquí la función de incremento pasó como argumento
Ejemplo 1.PY:
Producción:
>> Python Ejemplo1.py
ejemplo2.PY:
Producción:
>> Python Ejemplo2.py
Aquí say_wish la función devuelta de la función de deseo
ejemplo3.PY:
Producción:
>> Python Ejemplo3.py
Ejemplo4.PY:
Producción:
>> Python Ejemplo4.py
Cierre:
Python permite que una función anidada acceda al alcance externo de la función de adjunto.
Saludamiento de Def (mensaje):ejemplo5.PY:
Producción:
>> Python Ejemplo5.py
Después de comprender los conceptos anteriores ahora, escribiremos un ejemplo de decorador.
EX1: Aquí, decoraremos la función de mensaje. Imprimir el mensaje dentro de **** Sin modificar la función original, yo.mi., función de mensaje.
#Decorator Startejemplo6.PY:
Producción:
>> Ejemplo de Python6.py
En la forma más simple, podemos colocar el decorador encima de la definición de la función y llamar a la función como se muestra a continuación:
Aquí cualquier cuerda que queramos decorar dentro de ***, use este decorador.
Producción:
Decorador múltiple:
Podemos tener múltiples decoradores para una sola función. Aquí el decorador se aplica en el orden que llamamos.
sintaxis:
@decorador2
@decorador1
Definición de función
Aquí se aplicará el primer decorador, luego el segundo decorador.
Pasando argumentos a las funciones del decorador:
Podemos pasar argumentos a la función de envoltorio. Los argumentos pasados a la función para la que queremos decorar.
Ex:
def deco_wish (función):ejemplo7.PY:
Producción:
>> Python Ejemplo7.py
Pase el número variable de argumentos a la función del decorador:
Podemos aprobar cualquier número de argumentos usando *args (argumentos que no son de palabras llave como números) y ** kwargs (argumentos de palabras clave como un diccionario). Ambos son argumentos posicionales y almacenan los argumentos en las variables Args y Kwargs.
Nota: Aquí, podemos usar cualquier nombre en lugar de Args y Kwargs, pero se recomienda usar estos nombres para usar.
Ex:
Def dec_var_args (funciones):ejemplo8.PY:
Producción:
>> Python Ejemplo8.py
EX2: Supongamos que tenemos 2 función
Función1: Calcule la suma de números de la lista dada
Función2: multiplique cada número por 2 y agréguelos a la lista dada de números
Si queremos calcular el tiempo tomado por cada uno para la ejecución, podemos hacerlo de 2 maneras
Consulte el siguiente código resuelto con el decorador:
#Decorator Startejemplo9.PY:
Producción:
>> Python Ejemplo9.py
El decorador anterior se puede usar para calcular el tiempo de ejecución para cualquiera de las funciones. Al usar un decorador, podemos evitar el código repetido cuando tenemos el requisito de calcular el tiempo de ejecución para colocar el decorador por encima de la definición de la función.
Conclusión:
Los decoradores cambian la funcionalidad de una función/método sin cambiar el código original de la función se está decorando. Usando esto, podemos evitar escribir código repetido. Conocer el concepto del decorador nos hará fuertes en Python. Podemos usar el decorador en los casos a continuación: