🏆 RETO: El Clásico Hola Mundo
🎯 Desafío #4: El Decorador de Auditoría (Python)
En un entorno profesional, no basta con que una función haga su trabajo; necesitamos rastrear quién la usa y cuánto tarda sin modificar el código original de la función.
"Crea un 'Decorador' en Python llamado @auditoria que, al aplicarse a cualquier función, imprima en consola el tiempo exacto que tardó en ejecutarse y los argumentos que recibió."
Ver explicación y código 🛠️ (¡No hagas spoiler!)
🏗️ Paso 1: Análisis
Los decoradores son funciones que envuelven a otras funciones. Necesitamos usar *args y **kwargs para capturar cualquier tipo de entrada y el módulo time para la medición. ⚙️ Paso 2: Implementación
La función interna (wrapper) debe ejecutar la función original, pero guardando el timestamp antes y después de la ejecución. 🚀 Paso 3: Optimización
Usaremos functools.wraps para que la función decorada no pierda sus metadatos (como su nombre o documentación original). 💻 Código de la Solución
import time
from functools import wraps
def auditoria(func):
@wraps(func)
def wrapper(*args, **kwargs):
inicio = time.time()
resultado = func(*args, **kwargs)
fin = time.time()
print(f"[AUDITORÍA] Ejecutada: {func.__name__}")
print(f"[AUDITORÍA] Argumentos: {args} {kwargs}")
print(f"[AUDITORÍA] Tiempo: {fin - inicio:.4f} seg")
return resultado
return wrapper
@auditoria
def hackear_servidor(ip):
time.sleep(1) # Simula proceso pesado
return f"Acceso total a {ip}"
hackear_servidor("192.168.1.1")