Отступы — жизненно важная функция читабельного, поддерживаемого кода, но лишь немногие языки применяют его. Python — один из этих немногих.

Если Python определяет, что ваш код имеет неправильный отступ, вы увидите сообщение «IndentationError» при запуске кода. Но как это исправить и как предотвратить в будущем?

Почему вы получаете ошибку IndentationError в Python?

Ошибка «IndentationError: ожидается блок с отступом» — это то, что вы, вероятно, увидите, когда впервые начнете использовать Python, особенно если вы пришли с другого языка программирования.

То особенности правил отступов Python сложны, но они сводятся к одному: отступ кода в блоках. Это касается функций, предложений if и так далее. Вот пример неправильно отформатированного кода Python:

fname = "Гаурав"
Имя = "Сиял"

если fname == "Гаурав" и lname == "Сиял":
print("Ты Гаурав")
еще:
print("Ты кто-то другой")

Когда вы попытаетесь запустить приведенный выше код, вы получите следующее сообщение:

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

Вместо этого вы должны добавить либо табуляцию, либо ряд пробелов в начале двух строк, представляющих блоки:

fname = "Гаурав"
Имя = "Сиял"

если fname == "Гаурав" и lname == "Сиял":
print("Ты Гаурав")
еще:
print("Ты кто-то другой")

Если вы используете отступы с пробелами, вы фактически можете использовать любое число, которое вам нравится, при условии, что вы последовательны и недвусмысленны. Большинство программистов используют два, четыре или восемь пробелов.

Распространенные случаи правильного отступа

Вот несколько примеров, на которые вы можете ссылаться, чтобы убедиться, что вы делаете отступы правильно.

Операторы if

Сделайте отступ блока, который следует за если утверждение:

если мое_имя == "Гаурав":
print("Меня зовут Гаурав")
вернуть Истина

Функции

Тело функции представляет собой блок. Вы должны сделать отступ для всего этого блока:

определение magic_number():
результат = 42
вернуть результат

напечатать magic_number()

Для циклов

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

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

Убедитесь, что ваш редактор правильно использует отступы

Большинство современных текстовых редакторов поддерживают автоматический отступ кода. Если ваш редактор определит, что строка кода должна иметь отступ, он автоматически добавит табуляцию или пробелы.

В Спайдер, параметры отступа доступны в разделе Инструменты > Настройки > Исходный код:

Если вы используете vim, вы можете отредактируйте свою конфигурацию и использовать автоматический отступ и связанные параметры для настройки отступов. Например, вот обычная установка:

установить автоотступ
установить расширяемую вкладку
установить табуляцию = 4
установить софттабстоп=4
установить ширину сдвига = 4

Это автоматически сделает отступ с использованием четырех пробелов.

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

В этом примере окончательный вернуть оператор имеет отступ на один уровень от сигнатуры функции в первой строке. Однако, если вы поместите курсор в конец предпоследней строки и нажмете Войти, может произойти одно из двух. Ваш редактор может позиционировать курсор:

  1. Два уровня отступа, выровненные с "res =..."
  2. Один уровень отступа, выровненный с "else:"

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

Обработка ошибки Python «Ожидается блок с отступом»

Ошибки — обычное дело в Python, как и в любом другом языке программирования. Строгие правила Python в отношении отступов могут добавить к размышлению новый вид ошибок, но они полезны. Код с правильным отступом более удобочитаем и согласован между командами.

Ошибка отступа — не единственная, с которой вам придется иметь дело. Полезно ознакомиться с распространенными ошибками Python, чтобы знать, как их отлаживать и что делать для их исправления.

Что означает ошибка Python «Список индексов вне диапазона»?

Читать дальше

ДелитьсяТвитнутьДелитьсяЭл. адрес

Похожие темы

  • Программирование
  • питон

Об авторе

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

Гаурав Сиял имеет двухлетний опыт написания текстов для ряда компаний, занимающихся цифровым маркетингом, и документов по жизненному циклу программного обеспечения.

Другие работы Гаурава Сиала

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться