El módulo inspect expone firmas, parámetros, anotaciones y otros datos de objetos Python. Es útil en frameworks pequeños, inyección de dependencias, documentación y validación de adaptadores.

Ejemplo práctico

from inspect import Parameter, signature

def send(message: str, *, urgent: bool = False) -> None:
    pass

sig = signature(send)
for name, parameter in sig.parameters.items():
    required = parameter.default is Parameter.empty
    print(name, parameter.kind, required)

Trabajar con Signature

signature() y bind() modelan las reglas reales de llamada, incluidos parámetros posicionales, nominales y variables. Compara el valor predeterminado con Parameter.empty; None puede ser un valor legítimo.

La introspección tiene límites

Algunos objetos nativos o wrappers no conservan una firma completa. Usa functools.wraps en decoradores, evita atributos privados y mantén una alternativa explícita para objetos que no puedan inspeccionarse.

Sigue aprendiendo

Consulta también Decoradores Python: Guía Completa y Type Hints en Python: Guía Completa de Tipado. A documentación oficial de Python, consultada el 22 de julio de 2026, detalla la API y el comportamiento entre versiones.