Pular para o conteúdo

    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

    TipoO que representaExemplos
    intNúmeros inteiros, sem limite de tamanho42, -7, 1_000_000
    floatNúmeros decimais de precisão limitada3.14, -0.5
    complexNúmeros complexos3 + 4j
    strTexto"olá"
    boolVerdadeiro ou falsoTrue, False
    NoneTypeAusência de valorNone
    bytesSequência de bytesb"abc"
    basico/cap10_tipos.pylinha 10
    print(type(42), type(3.14), type(3 + 4j), type("oi"), type(True), type(None))
    
    Saída
    <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:

    basico/cap10_tipos.pylinhas 15 a 16
    print(2 ** 100)
    print(1_000_000)
    
    Saída
    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 ==:

    basico/cap10_tipos.pylinhas 18 a 23
    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"))
    
    Saída
    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:

    basico/cap10_tipos.pylinhas 28 a 29
    print(True + True)
    print(isinstance(True, int))
    
    Saída
    2
    True
    

    None

    None é o único valor do tipo NoneType e significa "sem valor". A comparação correta é sempre com is:

    basico/cap10_tipos.pylinhas 34 a 35
    resultado = None
    print(resultado is None)
    
    Saída
    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.