Escritura de Decoradores Parametrizados
Desliza para mostrar el menú
Cuando se desea que un decorador se comporte de manera diferente según alguna entrada, es necesario crear un decorador parametrizado. A diferencia de los decoradores regulares, que solo reciben la función como argumento, los decoradores parametrizados aceptan sus propios argumentos, lo que permite controlar su comportamiento de forma dinámica. Esto resulta especialmente útil cuando se quiere reutilizar un decorador en múltiples situaciones con diferentes configuraciones.
Estructura de un decorador parametrizado:
- La función externa acepta los argumentos del decorador;
- La función intermedia es el decorador real que recibe la función a decorar;
- La función interna envuelve y controla la ejecución de la función original.
Este enfoque por capas permite pasar argumentos al decorador, los cuales estarán disponibles cuando se llame a la función decorada.
12345678910111213141516171819202122# Outer function: accepts the decorator argument 'times' def repeat(times): # The actual decorator that takes the function to be decorated def decorator(func): # Inner function: wraps and controls the execution of 'func' def wrapper(*args, **kwargs): result = None # Call the original function 'times' times for _ in range(times): result = func(*args, **kwargs) return result # Return the wrapper to replace the original function return wrapper # Return the decorator function return decorator # Apply the repeat decorator @repeat(3) def say_hello(): print("Hello!") say_hello()
1. ¿En qué se diferencia un decorador parametrizado de un decorador regular?
2. ¿Por qué podrías querer pasar argumentos a un decorador?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla