Tipos básicos em Python
Python possui vários tipos de dados básicos ou fundamentais. Esses tipos são parte da linguagem e estão disponíveis para uso imediato. Python também nos permite criar outros tipos, chamados tipos derivados.
Python possui os seguintes tipos fundamentais:
int
: representa números inteiros.float
: representa números de ponto flutuante.bool
: representa valores booleanos (verdadeiro ou falso).str
: representa strings (cadeias de caracteres).None
: representa “ausência de um valor”.
Nesta seção veremos como trabalhar com esses tipos de dados.
Números inteiros
Um dos tipos de dados mais usados em Python são os números inteiros. O exemplo abaixo mostra a criação de variáveis desse tipo.
# Números inteiros
x = 1
y = 2
resultado = x + y
print(resultado)
print(type(resultado))
3
<class 'int'>
Como vimos no exemplo acima, os tipos de variáveis em Python são inferidos automaticamente pelo interpretador, sem que haja a necessidade de se especificar o tipo da variável no momento de sua declaração. Nós não dissemos que x
, y
e resultado
são do tipo int
. O interpretador foi capaz de deduzir isso com base nos valores que atribuímos a essas variáveis.
Se usarmos a função type
, o interpretador Python nos informa o tipo que ele deduziu para uma determinada variável. Vejamos um exemplo.
x = 42
print(type(x))
<class 'int'>
- 📌 NOTA
-
O que é uma variável?
Previamente, dissemos que uma variável é uma forma de se associar um nome a um valor. A forma mais técnica de dizer isso é dizer que uma variável é uma forma de se associar um nome a um objeto, o que nos leva à pergunta: O que é um objeto em Python?
Grosso modo, um objeto é tudo que pode aparecer à esquerda de um sinal de
=
em Python. Por exemplo, quando fazemosx = 1
, estamos criando um objeto chamadox
e atribuindo o valor1
a este objeto.Em Python, todo objeto possui um tipo. O tipo de um objeto indica o conjunto de valores que o objeto pode assumir. A função
type()
retorna o tipo do valor passado como parâmetro. No exemplo acima, como a somax + y
possui um valor inteiro, a funçãotype()
retorna<class 'int'>
indicando que o objetoresultado
é de fato do tipoint
.Um objeto também possui um conjunto de operações associado a ele. Por exemplo, um objeto do tipo
int
possui as operações de+
,-
,*
, etc.
Números de ponto flutuante
Se o nome ponto flutuante te assusta, não se preocupe. Números de ponto flutuante nada mais são que números com vírgula, ou como costumamos dizer “números quebrados”, constrastando com os números inteiros com os quais estamos mais acostumados. Vejamos alguns exemplos de expressões com números de ponto flutuante.
# Números de ponto flutuante
x = 1.1
y = 2.2
resultado = x + y
print(resultado)
print(type(resultado))
3.3000000000000003
<class 'float'>
É importante notar que se pelo menos um dos valores envolvidos em uma expressão numérica for um número de ponto flutuante, o retultado da expressão também será um número de ponto flutuante, como mostrado no exemplo abaixo.
x = 10
y = 2.5
resultado = x * y
print(resultado)
print(type(resultado))
25.0
<class 'float'>
Strings ou cadeias de caracteres
Strings nada mais são do que sequências (cadeias) de caracteres. Em outras palavras, uma string é simplesmente uma sequência de zero ou mais letras juntas. Vejamos alguns exemplos.
string_vazia = ''
uma_letra = 'a'
varias_letras = 'abacate'
print(type(string_vazia))
print(type(uma_letra))
print(type(varias_letras))
<class 'str'>
<class 'str'>
<class 'str'>
Você deve ter percebido que nos exemplos acima, a sequência de letras das strings aparece entre aspas simples. Em Python, assim como em outras linguagens, precisamos das aspas para declarar uma variável do tipo string. Tanto aspas simples quanto aspas duplas funcionam. A razão da necessidade das aspas é simples: elas diferenciam uma declaração de uma variável do string de uma atribuição entre duas variáveis. O exemplo abaixo vai deixar isso mais claro.
v = 'var'
s = v
print(v)
print(s)
var
var
É interessante notar alguns detalhes sobre o trecho de código acima:
v = var
: Declara uma variável cujo nome év
e atribui o valorvar
a essa variável.s = v
: Diz que o valor da variávels
é o mesmo da variávelv
(atribuição).
Variáveis do tipo NoneType
O termo None
é uma forma de representar a “ausência de um valor” em Python. Por exemplo, podemos criar uma variável e inicializá-la com None
. Variáveis inicializadas com None
possuem o tipo NoneType
.
n = None
print(type(n))
<type 'NoneType'>
Daremos mais detalhes sobre como trabalhar com esse tipo de dados posteriormente, mas por agora é suficiente que você saiba da existência dele.
- ⚠️ CUIDADO
-
Ausência de valor ou valor
None
Se você estiver programando e receber uma mensagem de erro mencionando
NoneType
, saiba que alguma das variáveis que você está manipulando não possui um valor associado a ela.Na verdade, tecnicamente, uma variável do tipo
NoneType
possui um valor, e esse valor éNone
, mas essa forma de pensar emNone
como “ausência de um valor” é útil na maioria dos casos.
Variáveis booleanas
Outro nome que representa algo bem simples, mas que costuma assustar as pessoas, é o nome variáveis booleanas. Essas variáveis nada mais são do que uma forma de se armazenar um valor lógico, ou seja, verdadeiro ou falso, que, em Python, são representados como True
e False
, respectivamente.
No exemplo abaixo, criamos uma variável booleana e imprimimos o valor e o tipo dessa variável.
# Variáveis booleanas (verdadeiro/falso)
a = True
print(a)
print(type(a))
True
<class 'bool'>
Vejamos mais alguns exemplos do uso de operações lógicas com variáveis booleanas.
# Exemplos de operações lógicas
# Exemplo de comparação de inteiros.
# Neste exemplo, 'a' é uma variável booleana,
# pois armazena o resultado de uma operação lógica.
a = 4 > 0
print(a)
# Strings são comparadas lexicograficamente, ou seja,
# em ordem alfabética, letra por letra.
b = "abacate" > "banana"
print(b)
# Expressões lógicas podem envolver muitas variáveis.
# Elas podem também ser combinadas para produzir
# expressões mais complexas.
x = y = 7
print(x <= y and y <= x)
True
False
True
Existem alguns detalhes importantes sobre o exemplo acima:
- Neste exemplo, a variável
a
armazena o resultado da comparação4 > 0
. Uma outra forma de se interpretar a expressãoa = 4 > 0
é o seguinte: se4
for maior que0
, armazene o valorTrue
na variávela
. Caso contrário, armazene o valorFalse
nessa variável. No nosso exemplo, como4
é de fato maior que0
(ou seja, o resultado da comparação é um valor lógico verdadeiro), a variávela
recebe o valorTrue
. - Como a letra
a
vem antes deb
no alfabeto, a palavra “abacate” é menor que “banana”, portanto a variávelb
recebe o valorFalse
. Neste tipo de comparação, caso a primeira letra das palavras seja igual, a segunda letra das palavras é comparada, e assim por diante. - Como
x
ey
são iguais, a comparação⇐
é verdadeira nos dois casos, o que faz com que a expressão como um todo seja verdadeira.
Conversão de tipos
O exemplo acima mostra uma conversão implícita entre tipos. Apesar de a expressão envolver uma variável do tipo int
(a variável x
) e uma variável do tipo float
(a variável y
), o resultado da expressão x * y
é implicitamente convertido para o tipo float
.
Existem também conversões explicitas de tipos em Python. Por exemplo, se quisermos que o resultado a expressão acima seja um número inteiro, podemos “forçar” que isso aconteça usando uma conversão explicita de dados:
x = 10
y = 2.5
resultado = int(x * y)
print(resultado)
print(type(resultado))
25
<class 'int'>
Um tipo particular de conversão efetuado com frequência são as conversões de/para variáveis booleanas. Para converter um valor para um valor booleano, usamos a função bool
, como ilustrado abaixo.
# Conversões de inteiros para booleans
a = bool(0)
print(a)
b = bool(1)
print(b)
c = bool(20)
print(c)
d = bool(-20)
print(d)
# Conversões de floats para booleans
e = bool(0.0)
print(e)
f = bool(3.14)
print(f)
False
True
True
True
True
False
O valor zero possui valor lógico False
. Todos os outros valores inteiros (inclusive números negativos) possuem o valor lógico True
.
Outras conversões também são possíveis, como mostrado no próximo exemplo:
# Converte inteiro para string
x = 10
s = str(x)
print(s)
# Converte float para inteiro
a = 2.5
b = int(a)
print(b)
# Converte inteiro para float
c = 2
d = float(c)
print(d)
10
2
2.0
Nesta seção, aprendemos como trabalhar com os chamados tipos fundamentais em Python. Esses tipos são extremamente úteis e são usados constantemente, então é importante que você entenda como manipulá-los.
Até aqui estamos lidando com os aspectos bem básicos da linguagem. A partir de agora começaremos a escrever pequenos programas para realizar tarefas mais complexas e interessantes.