Desarrollador Python: pregunta de entrevista

¿Cómo funcionan los decoradores de Python?

Un decorador recibe una función o clase y devuelve un reemplazo, normalmente un wrapper que añade comportamiento; functools.wraps conserva metadatos y el wrapper debe mantener el contrato original.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Un decorador es aplicación ordinaria de funciones: @deco sobre def f equivale a f = deco(f), evaluado una vez al definir. La mayoría devuelve un closure envoltorio que corre antes y después del original, reenviando *args, **kwargs y el valor de retorno. functools.wraps copia el nombre, la docstring y la firma para que la introspección y las herramientas sigan funcionando. Los decoradores con parámetros son funciones que devuelven un decorador, por eso tienen tres niveles anidados.

Ejemplo

Un decorador de reintentos envuelve la llamada en un bucle que captura un tipo de excepción configurado, espera con backoff y relanza tras el último intento; aplicarlo como @retry(times=3, exceptions=(TimeoutError,)) mantiene legible la función de negocio. Como el envoltorio corre en cada llamada, el mismo decorador puede medir tiempos o cachear sin tocar el cuerpo de la función.

Errores frecuentes

  • Olvidar functools.wraps, de modo que la función decorada muestra el nombre del envoltorio en logs y documentación.
  • Hacer en el momento de decorar trabajo que debía ocurrir en cada llamada.
  • Escribir un envoltorio que pierde el valor de retorno o se traga las excepciones del original.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Python