Comprendiendo los Decoradores
Comencemos con un ejemplo simple. Abra una nueva sesión del intérprete de Python:
python3
Tenemos una función que calcula el cuadrado de un número:
def square(x):
return x**2
Ahora digamos que queremos agregar una característica a la función square
que registre la entrada y salida de la función cada vez que se llama. Podemos hacer esto utilizando un decorador.
Aquí está el código para el decorador logger
:
def logger(func):
def wrapper(x):
print("Llamando a la función:", func.__name__)
print("Entrada:", x)
result = func(x)
print("Salida:", result)
return result
return wrapper
Ahora podemos utilizar este decorador para mejorar la función square
:
@logger
def square(x):
return x**2
Cuando llamamos a square(5)
, la salida será:
Llamando a la función: square
Entrada: 5
Salida: 25
Como puede ver, el decorador ha agregado la funcionalidad deseada a la función square
sin cambiar su código fuente.