Como especialista em Python com mais de 10 anos de experiência, posso afirmar: entender e aplicar corretamente a indentação Python é essencial para escrever códigos que realmente funcionam.
Antes de tudo, se você já se deparou com aquele famoso erro “IndentationError”, saiba que você não está sozinho. A indentação Python é uma das características mais marcantes da linguagem, e também uma das que mais causam dor de cabeça para quem está começando.
A princípio, pode parecer apenas estética, mas ela vai muito além disso. Neste artigo, você vai descobrir como a indentação é o “esqueleto” da lógica em Python. Vamos juntos mergulhar nesse assunto de forma descomplicada e prática!
O que é indentação Python e por que ela é obrigatória?
Antes de mais nada, indentação significa o recuo de uma linha de código em relação à margem da esquerda. Em muitas linguagens, isso é só para deixar o código bonitinho. Porém, no Python, ela define blocos de código.
Em outras palavras, se você errar a indentação, o Python não vai entender o que você está querendo fazer — e vai jogar um erro direto na sua tela.
Por exemplo:
pythonCopiarEditarif True:
print("Isso vai dar erro") # Indentação incorreta!
Agora, da forma certa:
pythonCopiarEditarif True:
print("Isso vai funcionar") # Indentação correta!
Como o Python interpreta a indentação?
Sobretudo, o Python entende a indentação como delimitação de blocos de comandos. Ou seja, tudo o que está recuado abaixo de uma estrutura de controle (como if
, for
, while
, def
, class
, etc.) pertence a ela.
Por exemplo:
pythonCopiarEditardef saudacao():
print("Olá!")
print("Seja bem-vindo(a) ao Python!")
Nesse caso, as duas linhas dentro da função fazem parte do mesmo bloco, por causa da indentação Python.
Quantos espaços devo usar para indentar?
Acima de tudo, existe um padrão recomendado: usar 4 espaços por nível de indentação. Isso está descrito no PEP 8, que é o guia de estilo oficial do Python.
Apesar disso, o Python aceita tanto espaços quanto tabs. Contudo, misturar os dois é pedir para o caos se instalar no seu código.
Por isso, escolha um e siga com ele. E se for para seguir uma boa prática, vá de espaços!
Principais erros causados por má indentação Python
Além disso, é comum cair em algumas armadilhas quando o assunto é indentação Python. Veja os erros mais frequentes:
- ❌ Misturar tabulação com espaços
- ❌ Esquecer de recuar blocos dentro de
if
,for
,while
, etc. - ❌ Colocar mais ou menos espaços do que o necessário
- ❌ Tentar quebrar a linha de um comando, mas sem alinhar corretamente
Indentação em funções: onde mais ocorrem erros
Bem como nas estruturas condicionais, as funções também precisam ter todos os seus comandos corretamente indentados.
pythonCopiarEditardef soma(a, b):
result = a + b
return result # Esse código vai dar erro
Correto:
pythonCopiarEditardef soma(a, b):
result = a + b
return result
Ou seja, toda a lógica dentro da função precisa seguir o mesmo nível de indentação.
Como indentar corretamente condicionais if
, elif
e else
Nesse sentido, veja um exemplo prático de indentação Python aplicada em uma estrutura condicional:
pythonCopiarEditaridade = 18
if idade >= 18:
print("Maior de idade")
else:
print("Menor de idade")
Do mesmo modo, o elif
segue a mesma regra:
pythonCopiarEditarnota = 7
if nota >= 9:
print("Excelente")
elif nota >= 7:
print("Bom")
else:
print("Precisa melhorar")
Loops for
e while
com indentação correta
Primeiramente, os laços de repetição são estruturas em que a indentação se torna ainda mais evidente.
Veja com for
:
pythonCopiarEditarnomes = ["Ana", "Bruno", "Carlos"]
for nome in nomes:
print(f"Olá, {nome}!")
Com while
:
pythonCopiarEditarcontador = 0
while contador < 3:
print(contador)
contador += 1
Note que dentro do laço, todos os comandos precisam estar corretamente indentados. Se colocar um deles fora da indentação, ele vai ser executado fora do loop!
Indentação em funções aninhadas
Você pode declarar funções dentro de outras funções. E sim, a indentação Python continua valendo com ainda mais força:
pythonCopiarEditardef externa():
print("Função externa")
def interna():
print("Função interna")
interna()
Cada nível de recuo representa um “nível de hierarquia” dentro da lógica do seu código.
Indentação em classes e métodos
Assim como em funções, os métodos de uma classe precisam ser indentados dentro dela. Veja só:
pythonCopiarEditarclass Pessoa:
def __init__(self, nome):
self.nome = nome
def apresentar(self):
print(f"Olá, meu nome é {self.nome}")
Se o método apresentar()
não estiver indentado dentro da classe Pessoa
, o Python simplesmente não vai entender que ele pertence à classe.
Identando blocos try/except/finally
Principalmente em tratamento de erros, a indentação correta garante que o código vai responder do jeito esperado:
pythonCopiarEditartry:
resultado = 10 / 0
except ZeroDivisionError:
print("Não é possível dividir por zero.")
finally:
print("Operação finalizada.")
Cada parte do bloco try
precisa estar alinhada com o seu except
e finally
.
Usando identação em listas e dicionários muito grandes
Você também pode usar a indentação para melhorar a legibilidade de estruturas grandes:
pythonCopiarEditarusuarios = [
"Alice",
"Bob",
"Charlie",
"Diana",
]
Ou com dicionários:
pythonCopiarEditarconfig = {
"resolução": "1080p",
"modo": "noturno",
"idioma": "pt-BR",
}
Esse tipo de indentação não é obrigatória, mas ajuda muito na manutenção do código.
Ferramentas que ajudam na indentação Python
Existem diversos editores e IDEs que ajudam (e muito!) na hora de manter a indentação Python em dia:
- VS Code: tem atalhos para corrigir indentação automática
- PyCharm: identifica e sugere correções de indentação
- Jupyter Notebook: aplica a indentação enquanto você digita
Além disso, ferramentas como black
ou autopep8
ajustam o estilo do código conforme o PEP 8.
Dicas para evitar erros de indentação
Do mesmo modo, aqui vão algumas boas práticas para nunca mais sofrer com a indentação Python:
- Ative a visualização de espaços/tabulação no editor
- Use só espaços (nunca misture com tabs!)
- Configure seu editor para usar 4 espaços por nível
- Evite copiar código de fontes duvidosas
- Sempre revise a indentação antes de executar
Casos reais de bugs causados por má indentação
Em projetos reais que participei, já vi desde scripts que paravam de funcionar sem motivo aparente até pipelines inteiros falhando… tudo por causa de um espaço a mais ou a menos.
Em uma vez específica, um return
estava fora da indentação correta dentro de um loop, e o script encerrava antes de processar os dados. Levamos horas até perceber que o erro era… um simples recuo errado!
Minhas Impressões Pessoais
Pessoalmente, acho que a indentação Python é o que torna a linguagem mais organizada e elegante. Ela obriga o programador a escrever um código limpo, fácil de ler e manter. Apesar de parecer rígida no começo, é justamente esse “rigor” que evita uma bagunça no desenvolvimento, especialmente em times maiores.
Conclusão: domine a indentação e domine o Python
Portanto, se você quer evoluir como desenvolvedor Python, a indentação Python precisa estar no seu radar desde o início. Afinal, não adianta saber lógica de programação se o Python não consegue nem interpretar o seu código.
Dessa forma, dominar a indentação é um passo fundamental para ganhar segurança, reduzir erros e escrever códigos profissionais.
Desse modo, mantenha sempre o olho na margem esquerda. Um espacinho a mais ou a menos pode ser a diferença entre um programa funcional e um erro frustrante!
Enfim, agora que você conhece todos os segredos da indentação Python, mãos ao teclado e… bora codar!
Samsung Galaxy A55 5G, Câmera Tripla Traseira de até 50MP, Selfie de 32MP, Nightography, Apagador de objetos, Design em metal e vidro, IP67, Super AMOLED 6.6" 120Hz Vision Booster, 128GB - Azul Claro
Samsung Galaxy A55 5G, Câmera Tripla Traseira de até 50MP, Selfie de 32MP, Nightography, Apagador de objetos, Design em metal e vidro, IP67, Super AMOLED 6.6" 120Hz Vision Booster, 128GB - Azul Escuro
Smartphone Samsung Galaxy A56 5G 128GB, 8GB RAM, Câmera 50MP, IP67, Super AMOLED 6.7", Recursos AI, Preto

Perguntas Frequentes (FAQ)
A indentação em Python é o espaço em branco no início de uma linha que define a estrutura do código, como blocos de código e loops.
A indentação é crucial porque Python usa espaços em branco para definir a hierarquia do código, ao contrário de outras linguagens que usam chaves ou palavras-chave.
Para indentação correta, use quatro espaços ou um tab, mas evite misturar os dois para evitar erros de sintaxe.