Variáveis e tipos
Todo programa precisa lembrar de coisas. Um quiz precisa do nome do jogador. Um jogo precisa da pontuação atual. Um script de clima precisa da cidade que você está consultando. O Python usa variáveis para isso: nomes que você atribui a valores para poder usá-los em todo o seu programa.
player_name = "Ana"
score = 0
city = "Brasília"Três linhas. Três coisas que o Python agora lembra. Use qualquer um desses nomes mais tarde e o Python te devolve o valor.
Armazenando um valor
O sinal = confunde quase todo mundo que vem da aula de matemática. No Python, = não significa "igual a". Significa armazene este valor sob este nome. Leia da esquerda para a direita:
city = "Brasília"city recebe "Brasília". Você está dizendo ao Python: lembre-se de "Brasília" e rotule isso como city.
Você pode substituir o valor de uma variável a qualquer momento. O Python apenas usa o mais recente:
score = 0
score = 10 # score agora é 10
score = 15 # score agora é 15Nomeando 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 tornam o código legível semanas depois. Nomes enigmáticos causam dor.
Regras que o Python impõe:
- Apenas letras, dígitos e underscores. Sem espaços ou hifens.
- Deve começar com uma letra ou underscore, nunca com um dígito
- Diferencia maiúsculas de 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 num piscar de olhos
user_name = "Ana"
total_price = 49.99
is_logged_in = True
MAX_RETRIES = 3
# você vai se arrepender desses em menos de uma hora
x = "Ana"
tp = 49.99
b = TrueUma armadilha que vale a pena conhecer logo: não nomeie uma variável com o nome de uma built-in do Python como list, input, type ou print. O Python permite, mas você vai silenciosamente quebrar a built-in pelo resto daquele escopo e os erros resultantes são difíceis de rastrear.
O que você pode armazenar
O Python tem quatro tipos que você vai usar em quase todo programa. O Python descobre 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 um nome de variável. Uma vez criada, uma string não pode ser alterada no lugar. O capítulo Strings cobre tudo que você pode fazer com elas.
player_name = "Ana"
city = "Brasília"
message = 'Fim de jogo'Se seu texto contém um apóstrofo, use aspas duplas para evitar ter que 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 vão sem aspas ou ponto decimal. O Python os chama de integers. Eles podem ser tão grandes quanto você precisar; o Python lida com números arbitrariamente grandes sem nenhum esforço especial da sua parte.
score = 0
age = 28
population = 8_100_000_000 # underscores são apenas para legibilidadeNúmeros decimais (float)
Qualquer número com um ponto decimal é um float. Eles funcionam como esperado para a maioria dos cálculos. Uma coisa a saber: alguns valores decimais não podem ser armazenados exatamente em binário, então você pode obter um pequeno erro de arredondamento:
price = 4.99
temperature = 36.6
0.1 + 0.2 # 0.30000000000000004Para o trabalho do dia a dia isso raramente importa. Para cálculos financeiros onde frações de centavo contam, o Python tem um módulo decimal que lida com isso corretamente. Isso é abordado no capítulo Numbers.
Verdadeiro ou falso (bool)
Algumas coisas são simplesmente ligadas ou desligadas. O Python usa booleans para isso: exatamente dois valores, True e False. Parecem pouca coisa neste estágio, mas toda condição e ramificação no seu programa funciona com base em um booleano.
is_logged_in = True
has_errors = FalseO Python também trata certos valores como se fossem False quando usados em uma condição: 0, 0.0, "" e None (o "sem valor aqui" do Python) todos se comportam como False. Todo o resto se comporta como True. Isso se torna útil no capítulo Control flow.
Verificando e convertendo tipos
Quando você não tem certeza de qual tipo é 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 (trunca, não arredonda) |
float("3.14") | 3.14 |
int("3.14") | ValueError: não pode converter uma string decimal para int diretamente |
int(float("3.14")) | 3 (converte para float primeiro, depois para int) |
bool(0) / bool("") | False |
Na prática
Os quatro tipos trabalhando juntos em um pequeno script. 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 em {}. O Python substitui pelo valor real da variável. Você vai aprendê-las apropriadamente no próximo capítulo.
player_name = "Ana"
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á-los silenciosamente para você.

