Как исправить ошибку «unexpected indent» в Python?
По сравнению с другими языками Python имеет множество уникальных сообщений об ошибках, например «unexpected indent». В этом руководстве мы расскажем, почему она возникает и как ее исправить.
Ошибка «unexpected indent» в Python
Сообщение об ошибке, которое выдает Python и с которым большинство из нас хотя бы раз сталкивалось при изучении и работе на этом языке:
IndentationError: unexpected indent
Исключение IndentationError является подклассом SyntaxError. Оно срабатывает, когда Python парсирует отступ, которого там быть не должно.
Это чистая синтаксическая ошибка, которую обычно допускают новички. Например, распространенная ошибка при написании оператора if-else в Python:
a = 1;
if a:
print(«The statement is true»)
print(a)
else:
print(«The statement is false»)
print(a)
И в результате вы получите вот такое сообщение:
File «code.py», line 5
print(a)
IndentationError: unexpected indent
Чтобы понять, почему так происходит и как избежать этой ошибки, необходимо изучить отступы в Python и их правила.
Что такое отступы?
В то время как во многих других языках программирования, таких как Java, HTML или C++, для обозначения блоков кода используются фигурные скобки {}, в Python используется отступ. Отступы – это пробельные символы, которыми начинается строка кода. Его необходимо использовать для начала блока кода (например, тела оператора if или функции).
Как программист, вы вольны выбирать способ использования табуляции или пробелов для создания отступа. Но он должен быть представлен для указания блока кода. Можно записать весь блок в одну строку, используя точку с запятой. Однако всегда лучше вместо этого сделать отступ. Сравните эти два фрагмента, которые оба являются корректными и выполняют одну и ту же задачу.
Сниппет 1
a = 28
b = 22if a > b:
print(«a is greater than b») # a is greater than b
Сниппет 2
a = 28
b = 22if a > b: print(«a is greater than b») # a is greater than b
Первый стиль написания более прост для понимания, что значительно облегчает сопровождение и отладку.
Правила отступов
Python использует уровень отступа для определения принадлежности строк кода к одной группе. Официальный стиль языка, PEP8, гласит, что для обозначения отступа необходимо использовать четыре пробела. Это хорошая практика, если вы хотите, чтобы ваш код соответствовал тому, как написаны встроенные библиотеки.
Однако для этой цели можно также использовать табуляцию или восемь пробелов. Это зависит как от личных предпочтений, так и от требований проекта. Только следите за тем, чтобы не вставлять лишние отступы во избежание ошибки «unexpected indent».
Вы можете оформить каждый блок кода по-своему (хотя это плохая практика программирования). Python все равно выполнит их нормально. Но если в одном блоке кода будет несколько уровней отступов, он покажет исключение IndentationError.
Заключение
Отступы – это отличительная и важная особенность Python. Не понимая ее, вы можете столкнуться с такими распространенными проблемами, как ошибка «unexpected indent». Однако это легко исправить, так как можно переформатировать блок кода, чтобы убрать сообщение об ошибке.