EMZETT.
Войти

IndentationError (Python)

Коротко: Python сообщает, что отступ строки не соответствует окружающему коду.

Подробнее: Python использует отступы вместо фигурных скобок для образования блоков. Если отступ неверен, интерпретатор прерывает работу до запуска. Типичные сообщения: IndentationError: unexpected indent, expected an indented block и unindent does not match any outer indentation level.

Подробности

Возможные причины

  • После if, for, def, class, while или try отсутствует блок с отступом.
  • Смешаны табуляции и пробелы (выглядит одинаково, но это не так).
  • Строка случайно с отступом или без него.
  • Код скопирован из интернета с неверным форматированием.

Пример

def greet(name):
print("Hello", name)   # IndentationError: expected an indented block

Правильно:

def greet(name):
    print("Hello", name)

Решения

  1. Используйте четыре пробела на уровень и будьте последовательны везде.
  2. Сделайте табуляции видимыми в редакторе и преобразуйте их в пробелы (VS Code: «Convert Indentation to Spaces»).
  3. Строка без содержимого? Тогда напишите pass.
  4. Найдите смешанные формы через python -m tabnanny file.py.
  5. Используйте форматировщик, например Black или Ruff.

См. также: ModuleNotFoundError