Отстъпът е жизненоважна характеристика на четливия, поддържаем код, но малко езици го прилагат. Python е един от малкото.

Ако Python определи, че кодът ви е с отстъп неправилно, ще видите съобщението „IndentationError“, когато стартирате кода си. Но как да поправите това и как да го предотвратите в бъдеще?

Защо получавате IndentationError в Python?

Грешката „IndentationError: очаква се блок с отстъп“ е нещо, което вероятно ще видите, когато за първи път започнете да използвате Python, особено ако сте от друг език за програмиране.

В специфики на правилата за отстъп на Python са сложни, но се свеждат до едно нещо: отстъп на кода в блокове. Това важи за функции, клаузи if и т.н. Ето пример за неправилно форматиран код на Python:

fname = "Gaurav"
lname = "Siyal"

ако fname == "Gaurav" и lname == "Siyal":
print("Ти си Гаурав")
друго:
print("Ти си някой друг")

Когато се опитате да изпълните горния код, ще получите съобщение като това:

 Файл "tmp.py", ред 5
print("Ти си Гаурав")
^
IndentationError: очаква се блок с отстъп
instagram viewer

Вместо това трябва да добавите или табулатор, или поредица от интервали в началото на двата реда, които представляват блокове:

fname = "Gaurav"
lname = "Siyal"

ако fname == "Gaurav" и lname == "Siyal":
print("Ти си Гаурав")
друго:
print("Ти си някой друг")

Ако правите отстъп с интервали, всъщност можете да използвате произволен номер, стига да сте последователни и недвусмислени. Повечето програмисти използват две, четири или осем интервала.

Често срещани случаи на правилен отстъп

Ето няколко примера, на които можете да се позовавате, за да сте сигурни, че правите отстъпи правилно.

Ако изявления

Отстъп на блока, който следва a ако изявление:

ако my_name == "Gaurav":
print("Казвам се Гаурав")
върнете True

Функции

Тялото на функцията е блок. Трябва да отстъпите целия този блок:

def magic_number():
резултат = 42
върне резултат

отпечатай magic_number()

За цикли

Както при оператор if, тялото на цикъл for трябва да бъде с отстъп с едно ниво повече от реда, започващ с за ключова дума:

за i в диапазон (10):
печат (i)

Уверете се, че вашият редактор прави отстъпи правилно

Повечето съвременни текстови редактори поддържат автоматично вдлъбване на кода. Ако вашият редактор определи, че ред код трябва да бъде с отстъп, той автоматично ще добави табулатори или интервали.

В Spyder, опциите за отстъп са налични под Инструменти > Предпочитания > Изходен код:

Ако използвате vim, можете редактирайте конфигурацията си и използвайте автоотстъп и свързани опции за конфигуриране на отстъп. Например, ето обща настройка:

задайте автоотстъп
задайте разширен раздел
задайте tabstop=4
задайте softtabstop=4
задайте shiftwidth=4

Това автоматично ще отстъпи с помощта на четири интервала.

Въпреки това, нито един редактор не може да направи автоматично вдлъбнатина бронирана. Все пак ще трябва да обърнете внимание на отстъпа, защото някои случаи са двусмислени:

В този пример, финалът връщане операторът е с отстъп на едно ниво от сигнатурата на функцията на първия ред. Ако обаче поставите курсора си в края на предпоследния ред и натиснете Въведете, може да се случи едно от двете неща. Вашият редактор може да позиционира курсора:

  1. Две нива на отстъп в, подравнени с "res =..."
  2. Едно ниво на отстъп в, подравнено с "else:"

Вашият редактор не може да прави разлика между тези два случая: може да искате да добавите още код в блока if/else, а може и да не.

Обработка на грешка „Очакван блок с отстъп“ на Python

Грешките са ежедневие в Python, точно както във всеки друг език за програмиране. Строгите правила на Python относно отстъпа може да добавят нов вид грешка, за която да мислите, но са полезни. Кодът с правилно отстъп е по-четлив и последователен в различните екипи.

Грешката в отстъпа не е единствената, с която ще трябва да се справите. Помага да сте запознати с често срещаните грешки в Python, за да знаете как да ги отстраните и какво да направите, за да ги коригирате.

Какво означава грешката на Python „Индексът на списък извън обхвата“?

Прочетете Следващото

ДялтуитДялелектронна поща

Свързани теми

  • Програмиране
  • Python

За автора

Гаурав Сиял (публикувани 64 статии)

Gaurav Siyal има две години опит в писането, като пише за серия от фирми за дигитален маркетинг и документи за жизнения цикъл на софтуера.

Още от Gaurav Siyal

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате