Variáveis em Python: Guia Prático para Iniciantes
Neste tutorial completo, você aprenderá o que são variáveis em Python, sua importância na programação, como declará-las e atribuir valores. Explore os principais tipos de dados (inteiros, strings, floats, booleanos), aprenda a converter entre eles, entenda o escopo (local e global) e adote boas práticas de nomeação. Inclui exemplos práticos e dicas para evitar erros comuns.

NameError: name 'nome' is not definedEsse é provavelmente o primeiro erro que aparece pra quem começa a escrever Python. Ele não aparece porque o código está errado na lógica — aparece porque o Python tentou usar um nome que ainda não foi apresentado a ele.
Variáveis são exatamente essa apresentação. Este artigo explica como fazê-la corretamente.
O que é uma variável
Uma variável é um nome que aponta para um valor armazenado na memória. Quando você escreve:
idade = 25Três coisas acontecem: o valor 25 é criado na memória, o nome idade é registrado, e esse nome passa a apontar para aquele valor. A partir desse ponto, sempre que o Python encontrar idade no código, ele vai buscar o valor que aquele nome referencia.
O sinal = aqui não é igualdade matemática. É atribuição. Leia como: "o nome idade recebe o valor 25".
Isso explica por que a linha abaixo — que seria impossível em matemática — é perfeitamente válida em Python:
contador = 0contador = contador + 1# contador agora vale 1O Python lê o lado direito primeiro: pega o valor atual de contador (0), soma 1, e atribui o resultado (1) de volta ao nome contador.
Tipos de dados básicos
O valor que uma variável armazena tem um tipo. Python identifica o tipo automaticamente a partir do valor que você atribuiu — sem necessidade de declarar.
nome = "Ana" # str (texto)idade = 28 # int (número inteiro)altura = 1.65 # float (número decimal)ativo = True # bool (verdadeiro ou falso)Cada tipo tem comportamentos próprios. Somar dois números funciona diferente de somar duas strings:
# soma numéricaa = 10b = 5print(a + b) # 15# concatenação de textoprimeiro = "Ana"ultimo = "Lima"print(primeiro + " " + ultimo) # Ana LimaPara saber o tipo de uma variável, use type():
print(type(nome)) # <class 'str'>print(type(idade)) # <class 'int'>print(type(altura)) # <class 'float'>print(type(ativo)) # <class 'bool'>Python é dinamicamente tipado
Em Python, uma variável pode mudar de tipo ao longo do código. Isso é possível — mas raramente é uma boa ideia:
x = 10 # x é intx = "dez" # x agora é str# isso funciona, mas confunde quem lê o códigoRegras para nomear variáveis
Python aceita qualquer nome que siga três regras:
Começa com letra ou underscore (
_)Contém apenas letras, números e underscores
Não é uma palavra reservada do Python
# ✅ nomes válidosnome = "Carlos"idade_usuario = 30_interno = Truevalor1 = 100# ❌ nomes inválidos1nome = "erro" # começa com númeronome-usuario = "erro" # hífen não é permitidofor = "erro" # palavra reservada do PythonConvenção: snake_case
Python usa snake_case por padrão: palavras em minúsculo separadas por underscore. Isso não é obrigatório pela linguagem, mas é o padrão da comunidade — e seguir o padrão torna o código mais legível para qualquer pessoa acostumada com Python.
# ✅ padrão Pythonnome_completo = "Ana Lima"total_de_itens = 42data_de_nascimento = "1995-04-12"# ❌ foge do padrão (funciona, mas destoa)nomeCompleto = "Ana Lima" # camelCase (comum em outras linguagens)NomeCompleto = "Ana Lima" # PascalCase (usado para classes em Python)Bons nomes importam mais do que parece
O computador não liga para o nome de uma variável. x, dado, valor_final_calculado — pra ele é tudo igual. O nome é pra quem lê o código.
# ❌ o que isso calcula?r = p * (1 + t) ** n# ✅ agora ficou claromontante = principal * (1 + taxa) ** periodoAtribuição múltipla
Python permite atribuir valores a várias variáveis ao mesmo tempo:
# atribuir o mesmo valor a múltiplas variáveisa = b = c = 0# atribuir valores diferentes em uma linhanome, idade, cidade = "Ana", 28, "São Paulo"print(nome) # Anaprint(idade) # 28print(cidade) # São PauloConstantes: valores que não devem mudar
Python não tem constantes de verdade — a linguagem não impede que um valor seja reatribuído. A convenção é usar nomes em UPPER_CASE para sinalizar que aquele valor não deve ser alterado:
TAXA_DE_JUROS = 0.12LIMITE_MAXIMO = 1000PI = 3.14159Erros comuns com variáveis
NameError — variável usada antes de ser definida:
print(nome) # NameError: name 'nome' is not definednome = "Carlos"TypeError — operação com tipos incompatíveis:
idade = 28mensagem = "Minha idade é " + idade# TypeError: can only concatenate str (not "int") to strmensagem = "Minha idade é " + str(idade)# ou use f-string, que converte automaticamente:mensagem = f"Minha idade é {idade}"Variável fora de escopo:
def saudacao(): texto = "Olá"print(texto) # NameError: name 'texto' is not definedVariável bem nomeada é documentação. O código que você escreve hoje vai ser lido por alguém amanhã — e esse alguém, na maioria das vezes, é você mesmo.
Referências


