O módulo inspect expõe assinaturas, parâmetros, anotações e outras informações de objetos Python. Ele é útil em frameworks pequenos, injeção de dependências, documentação e validação de adaptadores.

Exemplo prático

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)

Trabalhe com Signature

signature() e bind() representam as regras reais de chamada, incluindo parâmetros posicionais, nomeados e variádicos. Compare default com Parameter.empty; None pode ser um padrão legítimo.

Introspecção tem limites

Alguns objetos nativos ou wrappers não preservam uma assinatura completa. Use functools.wraps em decorators, evite depender de atributos privados e mantenha uma alternativa explícita para objetos que não podem ser inspecionados.

Continue estudando

Leia também Decorators Python: Guia Completo e Type Hints em Python: Guia Completo de Tipagem. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha a API e o comportamento entre versões.