A indentação é uma característica vital do código legível e de fácil manutenção, mas poucas linguagens a impõem. Python é um desses poucos.

Se o Python determinar que seu código está recuado incorretamente, você verá a mensagem “IndentationError” ao executar seu código. Mas como você conserta isso e como evitá-lo no futuro?

Por que você obtém o IndentationError em Python?

O erro “IndentationError: esperado um bloco recuado” é algo que você provavelmente verá quando começar a usar o Python, especialmente se você vier de outra linguagem de programação.

O especificidades das regras de recuo do Python são complexos, mas se resumem a uma coisa: recuar código em blocos. Isso vale para funções, cláusulas if e assim por diante. Aqui está um exemplo de código Python formatado incorretamente:

fname = "Gaurav"
lname = "Sial"

if fname == "Gaurav" e lname == "Siyal":
print("Você é Gaurav")
outro:
print("Você é outra pessoa")

Ao tentar executar o código acima, você receberá uma mensagem como esta:

 Arquivo "tmp.py", linha 5
print("Você é Gaurav")
^
IndentationError: esperava um bloco recuado
instagram viewer

Em vez disso, você deve adicionar uma tabulação ou uma série de espaços no início das duas linhas que representam os blocos:

fname = "Gaurav"
lname = "Sial"

if fname == "Gaurav" e lname == "Siyal":
print("Você é Gaurav")
outro:
print("Você é outra pessoa")

Se você recuar com espaços, poderá usar qualquer número que desejar, desde que seja consistente e inequívoco. A maioria dos programadores usa dois, quatro ou oito espaços.

Casos Comuns de Indentação Correta

Aqui estão alguns exemplos que você pode consultar, para garantir que está recuando corretamente.

Se declarações

Recue o bloco que segue um E se declaração:

if my_name == "Gaurav":
print("Meu nome é Gaurav")
retornar Verdadeiro

Funções

O corpo de uma função é um bloco. Você deve recuar este bloco inteiro:

def magic_number():
resultado = 42
retornar resultado

imprimir magic_number()

Para loops

Tal como acontece com uma instrução if, o corpo de um loop for deve ser recuado um nível a mais do que a linha que começa com o para palavra-chave:

para i no intervalo (10):
imprimir (e)

Certifique-se de que seu editor recue corretamente

A maioria dos editores de texto modernos suporta recuo automático de código. Se o seu editor determinar que uma linha de código deve ser recuada, ele adicionará tabulações ou espaços automaticamente.

Dentro Spyder, as opções de recuo estão disponíveis em Ferramentas > Preferências > Código fonte:

Se você estiver usando o vim, poderá edite sua configuração e usar o recuo automático e opções relacionadas para configurar o recuo. Por exemplo, aqui está uma configuração comum:

definir autoindent
definir aba de expansão
definir tabstop=4
definir softtabstop=4
definir largura de deslocamento = 4

Isso irá recuar automaticamente usando quatro espaços.

No entanto, nenhum editor pode tornar o recuo automático à prova de balas. Você ainda precisará prestar atenção ao recuo porque alguns casos são ambíguos:

Neste exemplo, o último Retorna A instrução é recuada um nível a partir da assinatura da função na primeira linha. No entanto, se você posicionar o cursor no final da penúltima linha e pressionar Entrar, uma de duas coisas pode acontecer. Seu editor pode posicionar o cursor:

  1. Dois níveis de recuo, alinhados com "res =..."
  2. Um nível de recuo, alinhado com o "else:"

Seu editor não pode distinguir entre esses dois casos: você pode querer adicionar mais código no bloco if/else, ou não.

Lidando com o erro 'Esperava um bloco recuado' do Python

Erros são uma ocorrência diária em Python, assim como em qualquer outra linguagem de programação. As regras rígidas do Python sobre recuo podem adicionar um novo tipo de erro para se pensar, mas são úteis. O código adequadamente recuado é mais legível e consistente entre as equipes.

O erro de recuo não é o único com o qual você terá que lidar. É útil estar familiarizado com os erros comuns do Python para que você saiba como depurá-los e o que fazer para corrigi-los.

O que significa o erro "List index out of range" do Python?

Leia a seguir

ParticipaçãoTweetParticipaçãoE-mail

Tópicos relacionados

  • Programação
  • Pitão

Sobre o autor

Gaurav Siyal (64 Artigos Publicados)

Gaurav Siyal tem dois anos de experiência em redação, escrevendo para uma série de empresas de marketing digital e documentos de ciclo de vida de software.

Mais de Gaurav Siyal

Assine a nossa newsletter

Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!

Clique aqui para assinar