Dicas de tipo Python: digitação estática e anotações

Aprenda como escrever dicas de tipo em Python. Melhore a qualidade do código, habilite o preenchimento automático e aproveite o mypy para análise estática de código.

Experimente no Editor

Visão geral

Python é historicamente uma linguagem de tipagem dinâmica, o que significa que o interpretador infere tipos de variáveis em tempo de execução, dando aos desenvolvedores velocidade e flexibilidade. No entanto, à medida que as bases de código crescem, essa flexibilidade de tipo dinâmico pode levar a erros confusos em tempo de execução — como passar uma lista para uma função que espera uma string. Para preencher essa lacuna,Python 3.5 introduziu dicas de tipo (anotações de tipo), permitindo que os desenvolvedores documentem explicitamente os tipos esperados no código.

As dicas de tipo não afetam como o Python executa seu código; o intérprete os ignora completamente em tempo de execução. Em vez disso, seu valor está na análise estática e nas ferramentas IDE. Ao adicionar anotações de tipo a variáveis, parâmetros de função e tipos de retorno, seu IDE pode fornecer preenchimento automático preciso e sinalizar instantaneamente erros de incompatibilidade de tipo. Ferramentas como `mypy` podem verificar sua base de código antes da implantação para detectar bugs estaticamente, imitando verificações em tempo de compilação de linguagens como TypeScript ou Java.

Os recursos de digitação do Python são extensos. Você pode anotar tipos básicos como `str`, `int` e `bool`, ou usar tipos avançados do módulo `typing` integrado (ou coleções padrão emPython 3.9+) como `list[str]`, `dict[str, int]` e `tuple[float, float]`. Recursos como `Union` (ou o operador de pipe `|` emPython 3.10+) permitem que parâmetros aceitem vários tipos, enquanto `Optional[T]` representa um valor que pode ser um tipo específico ou `None`. A implementação de dicas de tipo melhora drasticamente a legibilidade e a colaboração da equipe.

Saída de código e execução

Escrever uma função com anotações de tipo e inspecionar como ela aceita entradas.

typing_demo.py
Experimente no Editor
# Type annotations for function parameters and return values
def greeting(name: str, count: int) -> str:
    return f"Hello {name}! " * count

# Type hints on standard collections (Python 3.9+)
user_roles: dict[str, str] = {
    "admin": "Alice",
    "moderator": "Bob"
}

message = greeting("Jane", 2)
print(message)
print(f"Roles configured: {user_roles}")
Saída terminal
Hello Jane! Hello Jane! 
Roles configured: {'admin': 'Alice', 'moderator': 'Bob'}

Implementação passo a passo

  • Prevenindo bugs de integração em grandes bases de código de equipes
  • Habilitando o preenchimento de código IDE em projetos de código complexos
  • Gerando estruturas de API e esquemas de validação autodocumentados

Perguntas frequentes

As dicas de tipo impõem segurança de tipo em tempo de execução?

Não. Python não lança exceções de erro se você passar um tipo diferente da dica anotada. Para impor a verificação de tipo, você deve executar verificadores estáticos como mypy.

Qual é a diferença entre Qualquer e União?

Any desativa a verificação de tipo de uma variável, permitindo que ela contenha qualquer coisa. Union (ou T | U) restringe a variável a um subconjunto específico e definido de tipos.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.