Capítulo 10, Básico
Tipos de dados
Todo valor tem um tipo, e o tipo decide o que você pode fazer com ele. Python descobre o tipo sozinho, mas isso não significa que você possa ignorá-lo.
Código deste capítulo: basico/cap10_tipos.py
Os tipos básicos
| Tipo | O que representa | Exemplos |
|---|---|---|
int | Números inteiros, sem limite de tamanho | 42, -7, 1_000_000 |
float | Números decimais de precisão limitada | 3.14, -0.5 |
complex | Números complexos | 3 + 4j |
str | Texto | "olá" |
bool | Verdadeiro ou falso | True, False |
NoneType | Ausência de valor | None |
bytes | Sequência de bytes | b"abc" |
print(type(42), type(3.14), type(3 + 4j), type("oi"), type(True), type(None))
<class 'int'> <class 'float'> <class 'complex'> <class 'str'> <class 'bool'> <class 'NoneType'>
Inteiros sem limite, decimais com limite
O int do Python cresce até a memória acabar. O underscore ajuda a ler números grandes:
print(2 ** 100)
print(1_000_000)
1267650600228229401496703205376
1000000
O float segue o padrão binário IEEE 754 e não representa exatamente a maioria das frações decimais. Isso vale para qualquer linguagem, e é o motivo pelo qual você nunca deve comparar dinheiro com ==:
from decimal import Decimal
import math
print(0.1 + 0.2)
print(math.isclose(0.1 + 0.2, 0.3))
print(Decimal("0.1") + Decimal("0.2"))
0.30000000000000004
True
0.3
Para comparar decimais use math.isclose. Para dinheiro, use Decimal (ou trabalhe com centavos em inteiros).
bool é um tipo de int
Por razões históricas, bool é uma subclasse de int. Isso explica uma pegadinha clássica e importa ao testar tipos:
print(True + True)
print(isinstance(True, int))
2
True
None
None é o único valor do tipo NoneType e significa "sem valor". A comparação correta é sempre com is:
resultado = None
print(resultado is None)
True
Exercício 1
Classifique o tipo de um valor
Escreva tipo_de(valor) que devolva "nulo", "booleano", "inteiro", "decimal", "texto" ou "outro". Lembre-se de que True também é int.