Por que tipos importam
Um tipo é só uma categoria que diz ao Python como um valor deve se comportar. Somar dois inteiros é aritmética; somar duas strings é juntá-las; somar uma string e um inteiro é erro. O tipo de um valor determina quais operações fazem sentido.
O Python tem um conjunto pequeno e amigável de tipos embutidos. Você vai usar quatro deles — int, float, str, bool — em praticamente todo programa que escrever. O resto aparece quando você começa a organizar dados em coleções.
Números: int e float
Dois tipos de número, e o Python escolhe qual você recebe pela forma como escreveu:
Sem ponto decimal? Você recebe um int. Com ponto decimal? Você recebe um float. A aritmética mistura os dois livremente — qualquer operação com float produz float:
Inteiros em Python podem ser tão grandes quanto sua memória permitir — sem overflow, sem teto fixo de 32 ou 64 bits. Você pode calcular 2 ** 1000 e o Python te devolve cada dígito.
Floats seguem as regras IEEE 754 de sempre, o que significa algumas surpresas clássicas:
Isso imprime 0.30000000000000004, não 0.3. Não é bug do Python — é como ponto flutuante binário funciona em toda linguagem. Quando você precisa de decimais exatos (dinheiro, por exemplo), recorra ao módulo decimal. Para o resto, arredondar na hora de exibir geralmente basta.
Strings: str
Strings são sequências de caracteres. Envolva em aspas simples ou duplas — o Python não liga, contanto que a aspa de abertura e de fechamento combinem:
Strings com aspas triplas (""" ... """) cruzam várias linhas:
Strings têm uma API enorme que você aprende com o tempo — fatiamento, métodos como .upper(), .split(), .replace() e a formatação f-string que te dá f"Hello, {name}". Tem uma página dedicada a strings logo a seguir.
Booleanos: bool
Dois valores, escritos exatamente como mostrado — True e False, com letra maiúscula no começo. Comparações produzem booleanos:
Por baixo dos panos, True e False são literalmente 1 e 0, o que significa que você pode somar booleanos se um dia precisar contar quantas condições foram verdadeiras:
None: a ausência de um valor
None é o jeito do Python dizer "sem valor". Funções que não retornam nada explicitamente retornam None. Você também vai usar como placeholder:
A convenção é testar com is None e is not None — não com == None. is verifica identidade, que é o que você realmente quer dizer aqui.
Listas, tuplas, sets, dicionários
Esses são os quatro tipos de coleção embutidos. Cada um tem sua página dedicada, mas aqui vai o esboço rápido para você reconhecer:
Regras práticas:
- List: uma sequência que você espera mudar. Adicionar, remover, ordenar — tudo bem.
- Tuple: uma sequência que você quer proteger de mudança. Muito usado para registros de formato fixo como coordenadas
(x, y). - Set: uma sacola de itens únicos, quando duplicatas seriam um bug.
- Dict: buscas por chave. A estrutura com formato de JSON.
Convertendo entre tipos
O Python não converte tipos automaticamente quando isso seria arriscado. Transformar um inteiro em string, ou uma string em número, é algo que você pede:
Se uma conversão não faz sentido — int("hello"), por exemplo — o Python gera ValueError e te diz o que você passou. Erro, explicado, conserte e siga.
Verificando um tipo
Duas ferramentas que vale conhecer:
type() é ótimo para uma espiada rápida no REPL. isinstance() é o que você usa em código de verdade porque se dá bem com herança e pode checar contra vários tipos ao mesmo tempo.
Um exercício rápido de reconhecimento
Tente rodar o bloco abaixo como está, depois mude alguns valores e veja em quais tipos eles se transformam:
Você não precisa entender for ainda — vamos chegar lá — mas isso te dá uma ideia dos tipos embutidos num único olhar.
Escolha o tipo que serve aos dados
Você não precisa decorar cada tipo agora. Precisa reconhecer um quando vê, e escolher o certo quando cria dados. "Isso é fixo ou muda? Único ou não? Busco por chave ou por posição?" Essas quatro perguntas escolhem o tipo de coleção em noventa por cento das vezes.
Na próxima: strings em profundidade, porque é o tipo de dado que você vai mexer em quase todo programa.
Perguntas frequentes
Quais são os principais tipos de dados em Python?
Números (int e float), strings (str), booleanos (bool), None e quatro tipos de coleção — list, tuple, set e dict. Todo o resto que você vê em código Python é construído em cima desses mais um punhado de outros (bytes, complex, frozenset).
Como verifico o tipo de um valor em Python?
Envolva em type(): type(42) retorna <class 'int'>, type('hi') retorna <class 'str'>. Para uma verificação true/false, use isinstance(valor, int) — é mais flexível porque também lida com subclasses.
Python é estaticamente ou dinamicamente tipado?
Dinamicamente tipado. Uma variável pode apontar para qualquer tipo de valor, e a mesma variável pode mudar de tipo ao longo da vida. Isso é diferente de linguagens como Java ou C++, onde você declara o tipo da variável uma vez e não pode mudar.