Pular para o conteúdo

A primeira escola especializada em tecnologia do Alto Solimões, com corpo técnico formado na área.

Módulo 2: Fundamentos da Linguagem

Type Hints

Anotações de tipo para código mais claro

O que são type hints?

Type hints são etiquetas opcionais que você coloca no código para dizer qual tipo uma variável ou função espera. É como rotular uma caixa: "aqui vai texto", "aqui vai número".

O ponto mais importante: type hints não mudam como o programa funciona. Python continua dinâmico. As anotações servem para você, para sua IDE e para ferramentas como o mypy.

Sintaxe básica em variáveis

A sintaxe é simples: variável: tipo = valor. O tipo vem depois dos dois-pontos:

# Sem type hints
nome = "Ana"
idade = 25

# Com type hints
nome: str = "Ana"
idade: int = 25
altura: float = 1.75
ativo: bool = True
resultado: None = None

Funciona igualzinho com ou sem a anotação. A diferença e que sua IDE agora sabe o tipo é te ajuda com autocomplete.

Em funções -- parâmetros e retorno

Type hints brilham de verdade em funções. Você anota os parâmetros é o retorno com ->:

def saudação(nome: str, idade: int) -> str:
return f"Olá, {nome}! Você tem {idade} anos."

print(saudação("Ana", 22))
# → Olá, Ana! Você tem 22 anos.

Com valor padrão, o hint vem antes do =:

def configurar(host: str = "localhost", porta: int = 8080) -> str:
return f"{host}:{porta}"

print(configurar()) # → localhost:8080

Função que não retorna nada usa -> None:

def exibir(texto: str) -> None:
print(texto)

Type hints são ignorados na execução

Isso é importante: o Python não impede você de passar o tipo errado. Ele roda normalmente:

idade: int = "vinte e cinco"  # anotou int, mas e str
print(idade) # → vinte e cinco (funciona!)

nome: str = 42 # anotou str, mas e int
print(nome) # → 42 (funciona!)

Tipos para colecoes (Python 3.9+)

A partir do Python 3.9, você pode usar os tipos de colecoes diretamente:

nomes: list[str] = ["Ana", "Carlos", "Maria"]
idades: dict[str, int] = {"Ana": 25, "Carlos": 30}
coordenadas: tuple[float, float] = (23.5, -46.6)
ids_unicos: set[int] = {1, 2, 3, 4}
TipoSignificadoExemplo
list[str]Lista de strings["a", "b"]
dict[str, int]Dict com chave str e valor int{"x": 1}
tuple[int, int]Tupla com 2 inteiros(1, 2)
set[int]Conjunto de inteiros{1, 2, 3}

Tipo opcional -- pode ser None (Python 3.10+)

Quando um valor pode ser de um tipo ou None, use |:

nome: str | None = None

def buscar_usuario(id: int) -> str | None:
if id == 1:
return "Ana"
return None

resultado = buscar_usuario(1)
print(resultado) # → Ana

resultado = buscar_usuario(99)
print(resultado) # → None

Verificacao com mypy

O mypy é uma ferramenta que analisa seu código e encontra erros de tipo sem precisar rodar o programa:

def saudação(nome: str) -> str:
return f"Olá, {nome}!"

resultado: int = saudação("Ana") # mypy aponta erro aqui
mypy verificar.py
# → error: Incompatible types in assignment

Exemplo prático: cadastro tipado

def criar_perfil(
nome: str,
idade: int,
email: str,
ativo: bool = True
) -> dict[str, str | int | bool]:
return {
"nome": nome,
"idade": idade,
"email": email,
"ativo": ativo
}

perfil = criar_perfil("Ana", 22, "[email protected]")
print(perfil)
# → {'nome': 'Ana', 'idade': 22, 'email': '[email protected]', 'ativo': True}

Cada parâmetro tem seu tipo anotado. O retorno mostra que o dicionario pode ter valores str, int ou bool. Quem ler a função sabe exatamente o que ela espera.

Referências

Testa o que você leu

3 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.

Pergunta 1 de 3
O que acontece ao atribuir um valor de tipo errado a uma variável anotada com type hint?