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.