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