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.
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.
# 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}")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
Entenda as variáveis do Python e os principais tipos de dados (strings, inteiros, flutuantes, booleanos). Um guia completo para iniciantes sobre atribuição de memória em Python.
Funções PythonDomine as funções do Python. Aprenda como escrever código reutilizável usando def, definir argumentos, retornar valores e compreender o escopo local e globalmente.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Como verificar o tipo de dados em Python
Aprenda como verificar tipos de dados em Python. Entenda quando usar type() vs isinstance(), lidar com classes personalizadas e escrever validações de verificação de tipo seguras.
Folha de referências de conversões de tipo Python
Aprenda conversões de tipo implícitas e explícitas em Python. Converta entre strings, inteiros, flutuantes, listas, conjuntos e dicionários.
Python vs TypeScript: scripts dinâmicos vs Web com segurança de tipo
Compare Python e TypeScript. Aprenda sobre sistemas de tipo estrutural, metadados decoradores, verificações de compilador, tempos de execução da Web e ferramentas de desenvolvedor.