Menu

Tipos de dados em Python: int, float, str, bool, list, dict e mais

Um passeio pelos tipos de dados embutidos do Python — números, strings, booleanos, None, listas, tuplas, sets, dicionários — com exemplos e quando usar cada um.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

Strings com aspas triplas (""" ... """) cruzam várias linhas:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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.

Aprenda a programar com o Coddy

COMEÇAR