Python Tipos Intermediário
Type hints
Type hints são anotações opcionais que indicam os tipos esperados de variáveis, parâmetros e retornos de funções. Elas não são verificadas em tempo de execução pelo interpretador Python, mas servem como documentação viva e permitem que ferramentas como mypy façam análise estática, apontando erros antes de rodar o código.
Desde o Python 3.10, podemos usar a sintaxe de união com |, por exemplo int | None, que substitui Optional[int] de forma mais limpa. Para coleções genéricas, usamos list[int], dict[str, float], etc., indicando os tipos dos elementos internos.
Ferramentas como mypy leem esses hints e verificam a consistência do código. Elas ajudam a evitar bugs comuns, como passar None para uma função que espera str, ou esquecer de tratar um retorno opcional. O custo é baixo: basta anotar e rodar mypy arquivo.py.
Neste card, vamos explorar anotações básicas, uniões com |, genéricos com TypeVar e como integrar o mypy no fluxo de desenvolvimento.
Pontos-chave
- Type hints são anotações opcionais que documentam tipos e permitem verificação estática.
- A partir do Python 3.10,
int | Noneé a forma idiomática de representar união comNone. - Genéricos permitem criar funções e classes que funcionam com vários tipos mantendo a segurança.
mypyé a ferramenta padrão para checar type hints estaticamente.- Anotações não afetam a execução, mas melhoram a legibilidade e a manutenção.
from typing import TypeVar
T = TypeVar('T')
def soma(a: int, b: int) -> int:
return a + b
def primeiro_elemento(lista: list[T]) -> T | None:
return lista[0] if lista else None
def processa_nome(nome: str | None) -> str:
if nome is None:
return "Anônimo"
return nome.upper()
if __name__ == "__main__":
print(soma(2, 3))
print(primeiro_elemento([10, 20, 30]))
print(primeiro_elemento([]))
print(processa_nome("maria"))
print(processa_nome(None))