Variáveis e tipos
Todo programa precisa guardar informações. Um quiz precisa do nome do jogador. Um jogo precisa da pontuação atual. Um script de previsão do tempo precisa da cidade que você está consultando. O Python usa variáveis para isso: nomes que você associa a valores para poder usá-los ao longo do seu programa.
player_name = "Alice"
score = 0
city = "Tokyo"Três linhas, três coisas que o Python agora guarda na memória. Em cada uma, o Python primeiro calcula o valor do lado direito, e só então o armazena sob o nome do lado esquerdo. Use esse nome depois e o Python te devolve o valor.
Armazenando um valor
O sinal = confunde quase todo mundo que vem da matemática escolar. No Python, = não significa "é igual a". Significa armazene este valor sob este nome:
city = "Tokyo"city recebe "Tokyo". Você está dizendo ao Python: guarde "Tokyo" e rotule isso como city.
Você pode substituir o valor de uma variável a qualquer momento. O Python sempre usa o mais recente:
score = 0
score = 10 # score agora é 10
score = 15 # score agora é 15= não é o "igual" da aula de matemática, é "guarde este valor sob este nome". Mude quando quiser, e o Python mantém sempre o mais recente. Não precisa declarar nada, sem preparação: você dá o nome e ele já existe. Demorei tempo demais pra parar de complicar isso. Nomeando suas variáveis
Você escolhe o nome. O Python tem algumas regras rígidas, e a comunidade segue convenções que vale a pena adotar desde o primeiro dia. Nomes claros deixam o código legível semanas depois. Nomes obscuros causam dor de cabeça.
Regras que o Python impõe:
- Apenas letras, dígitos e underscores. Sem espaços ou hifens.
- Precisa começar com uma letra ou underscore, nunca com um dígito
- Diferencia maiúsculas e minúsculas:
score,ScoreeSCOREsão três variáveis distintas
Convenções que todo mundo segue (PEP 8):
| Coisa | Estilo | Exemplo |
|---|---|---|
| Variáveis e funções | snake_case | user_name, total_price |
| Constantes | UPPER_SNAKE_CASE | MAX_RETRIES, BASE_URL |
| Classes | PascalCase | UserAccount, DataLoader |
# nomes claros, legíveis de imediato
user_name = "Alice"
total_price = 49.99
is_logged_in = True
MAX_RETRIES = 3
# você vai se arrepender destes em menos de uma hora
x = "Alice"
tp = 49.99
b = TrueUma armadilha que vale conhecer desde já: não dê a uma variável o nome de um recurso embutido do Python, como list, input, type ou print. O Python permite, mas você vai quebrar silenciosamente o recurso embutido pelo resto daquele escopo, e os erros resultantes são difíceis de rastrear.
snake_case e está tudo certo. Meu único erro de novato: não chamar uma variável de list ou print. O Python deixa, e depois tudo fica estranho sem nenhum aviso. O que você pode armazenar
O Python tem quatro tipos que você vai usar em praticamente todo programa. O Python deduz qual tipo você quer dizer pela forma como você escreve o valor. Você nunca declara um tipo explicitamente.
Texto (str)
Qualquer texto vai entre aspas, simples ou duplas. As aspas dizem ao Python que você quer caracteres literais, não o nome de uma variável. Depois de criada, uma string não pode ser alterada no próprio lugar. O capítulo Strings cobre tudo o que você pode fazer com elas.
player_name = "Alice"
city = "Tokyo"
message = 'Game over'Se o seu texto contém um apóstrofo, use aspas duplas para não precisar escapá-lo:
note = "It's a great day"
note = 'It\'s a great day' # mesmo resultado, usando um escapeNúmeros inteiros (int)
Números inteiros entram sem aspas e sem ponto decimal. O Python os chama de inteiros (integers). Eles podem ser tão grandes quanto você precisar; o Python lida com números enormes sem nenhum esforço especial da sua parte.
score = 0
age = 28
population = 8_100_000_000 # underscores servem só para legibilidade8_100_000_000 só estão lá para você conseguir ler. Números decimais (float)
Qualquer número com ponto decimal é um float. Eles funcionam como esperado na maioria dos cálculos. Uma coisa a saber: alguns valores decimais não podem ser armazenados de forma exata em binário, então você pode ter um pequeno erro de arredondamento:
price = 4.99
temperature = 36.6
0.1 + 0.2 # 0.30000000000000004No dia a dia isso raramente importa. Para cálculos financeiros em que fração de centavo conta, o Python tem um módulo decimal que trata isso corretamente. Isso é abordado no capítulo Numbers.
0.1 + 0.2 resulta em 0.30000000000000004. Não é bug, isso é binário. Para dinheiro, use decimal.Decimal. Verdadeiro ou falso (bool)
Algumas coisas estão ligadas ou desligadas. O Python usa booleanos para isso: exatamente dois valores, True e False. Eles parecem pouco importantes nesta fase, mas toda condição e todo desvio no seu programa se apoiam num booleano.
is_logged_in = True
has_errors = FalseO Python também trata certos valores como se fossem False quando usados numa condição: 0, 0.0, "" e None (o "nenhum valor aqui" do Python) se comportam como False. Todo o resto se comporta como True. Isso se torna útil no capítulo Control flow.
True e False, e eles estão por trás de todo if que você vai escrever. A parte divertida: 0, "", [] e None contam como False, todo o resto conta como True. Verificando e convertendo tipos
Quando você não tem certeza de qual é o tipo de um valor, type() te diz. Para verificar se um valor é de um tipo específico, isinstance() é a ferramenta mais confiável:
print(type("hello")) # <class 'str'>
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
isinstance(42, int) # True
isinstance("hi", str) # TrueO Python não mistura tipos automaticamente. Concatenar uma string e um número gera um TypeError:
score = 42
print("Your score is " + score) # TypeError
print("Your score is " + str(score)) # funcionaConverta explicitamente usando o nome do tipo como uma função:
| Chamada | Resultado |
|---|---|
str(42) | "42" |
int(3.9) | 3 (truncado, não arredondado) |
float("3.14") | 3.14 |
int("3.14") | ValueError: não é possível converter uma string decimal para int diretamente |
int(float("3.14")) | 3 (converta para float primeiro, depois para int) |
bool(0) / bool("") | False |
type() te diz o que uma coisa é, isinstance() verifica se ela é de um determinado tipo. E o Python não vai colar uma string e um número juntos, então converta primeiro com str() ou int(). Todo mundo cai nessa uma vez. Na prática
Os quatro tipos trabalhando juntos num script pequeno. As linhas de saída usam f-strings para embutir valores no texto: coloque f antes da aspa de abertura e envolva qualquer variável com {}. O Python a substitui pelo valor real da variável. Você vai aprender sobre elas de forma adequada no próximo capítulo.
player_name = "Alice"
level = 3
accuracy = 0.94
is_premium = True
print(f"{player_name} is on level {level} with {accuracy:.0%} accuracy.")
print(f"Premium account: {is_premium}")Os tipos importam porque level + 1 funciona e player_name + 1 não. Cada variável guarda exatamente um tipo de coisa; o Python não vai misturá-las silenciosamente para você.

