Отстъпът е жизненоважна характеристика на четливия, поддържаем код, но малко езици го прилагат. 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: очаква се блок с отстъп
Вместо това трябва да добавите или табулатор, или поредица от интервали в началото на двата реда, които представляват блокове:
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
Това автоматично ще отстъпи с помощта на четири интервала.
Въпреки това, нито един редактор не може да направи автоматично вдлъбнатина бронирана. Все пак ще трябва да обърнете внимание на отстъпа, защото някои случаи са двусмислени:
В този пример, финалът връщане операторът е с отстъп на едно ниво от сигнатурата на функцията на първия ред. Ако обаче поставите курсора си в края на предпоследния ред и натиснете Въведете, може да се случи едно от двете неща. Вашият редактор може да позиционира курсора:
- Две нива на отстъп в, подравнени с "res =..."
- Едно ниво на отстъп в, подравнено с "else:"
Вашият редактор не може да прави разлика между тези два случая: може да искате да добавите още код в блока if/else, а може и да не.
Обработка на грешка „Очакван блок с отстъп“ на Python
Грешките са ежедневие в Python, точно както във всеки друг език за програмиране. Строгите правила на Python относно отстъпа може да добавят нов вид грешка, за която да мислите, но са полезни. Кодът с правилно отстъп е по-четлив и последователен в различните екипи.
Грешката в отстъпа не е единствената, с която ще трябва да се справите. Помага да сте запознати с често срещаните грешки в Python, за да знаете как да ги отстраните и какво да направите, за да ги коригирате.
Какво означава грешката на Python „Индексът на списък извън обхвата“?
Прочетете Следващото
Свързани теми
- Програмиране
- Python
За автора
Gaurav Siyal има две години опит в писането, като пише за серия от фирми за дигитален маркетинг и документи за жизнения цикъл на софтуера.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!
Щракнете тук, за да се абонирате