This content is only available in Portuguese.
Not translated yet for this language.
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 defined
Esse é 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 = 25
Trê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 = 0
contador = contador + 1
# contador agora vale 1
O 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érica
a = 10
b = 5
print(a + b) # 15
# concatenação de texto
primeiro = "Ana"
ultimo = "Lima"
print(primeiro + " " + ultimo) # Ana Lima
Para 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 é int
x = "dez" # x agora é str
# isso funciona, mas confunde quem lê o código
O tipo de uma variável deve refletir o que ela representa. Se um nome muda de tipo no meio do código, provavelmente ele está fazendo coisas demais.
Regras 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álidos
nome = "Carlos"
idade_usuario = 30
_interno = True
valor1 = 100
# ❌ nomes inválidos
1nome = "erro" # começa com número
nome-usuario = "erro" # hífen não é permitido
for = "erro" # palavra reservada do Python
As palavras reservadas — for, if, while, class, return, entre outras — têm significado especial na linguagem e não podem ser usadas como nomes.
Convençã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 Python
nome_completo = "Ana Lima"
total_de_itens = 42
data_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 claro
montante = principal * (1 + taxa) ** periodo
Um bom nome descreve o que a variável contém, não como ela foi calculada. resultado_da_soma descreve o processo; total descreve o conteúdo. Prefira o conteúdo.
Evite nomes de letra única, exceto em casos muito específicos como índices de loop curtos ou coordenadas matemáticas onde a convenção já existe (x, y, i).
Atribuição múltipla
Python permite atribuir valores a várias variáveis ao mesmo tempo:
# atribuir o mesmo valor a múltiplas variáveis
a = b = c = 0
# atribuir valores diferentes em uma linha
nome, idade, cidade = "Ana", 28, "São Paulo"
print(nome) # Ana
print(idade) # 28
print(cidade) # São Paulo
A segunda forma — chamada de desempacotamento — exige que o número de variáveis seja igual ao número de valores. Se não bater, Python levanta um erro.
Constantes: 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.12
LIMITE_MAXIMO = 1000
PI = 3.14159
Qualquer desenvolvedor que veja um nome em maiúsculas entende que aquele valor é uma constante de configuração — e que alterá-lo no meio do código seria um erro.
Erros comuns com variáveis
NameError — variável usada antes de ser definida:
print(nome) # NameError: name 'nome' is not defined
nome = "Carlos"
O Python executa linha por linha. nome precisa existir antes de ser usado.
TypeError — operação com tipos incompatíveis:
idade = 28
mensagem = "Minha idade é " + idade
# TypeError: can only concatenate str (not "int") to str
Para concatenar número com texto, converta primeiro:
mensagem = "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 defined
Variáveis criadas dentro de funções existem apenas dentro delas. Esse conceito — escopo — é o próximo passo natural depois de dominar variáveis.
O que vale levar
- Variável é um nome que aponta para um valor.
=é atribuição, não igualdade matemática. - Python identifica o tipo automaticamente:
str,int,float,bool. - Use
type()para checar o tipo de qualquer valor. - Nomes em
snake_case, descritivos e sem abreviações obscuras. UPPER_CASEsinaliza constante por convenção — não é imposto pela linguagem.NameErrorsignifica que a variável foi usada antes de ser criada.TypeErrorsignifica que a operação não faz sentido com aquele tipo.
Variáveis são a base de qualquer programa. O próximo passo é entender como controlar o fluxo de execução — quando uma parte do código roda e quando não roda — com condicionais e loops.
Referências


