오류/파이썬

[Python 파이썬] IndentationError 오류 해결 방법

낄리 2026. 1. 14. 18:00

 

파이썬(Python)은 다른 프로그래밍 언어와 달리 코드를 구조화하는 데 있어 '들여쓰기(Indentation)'를 문법적으로 강제하는 독특한 특징이 있습니다. C언어나 자바가 중괄호({})를 사용하여 코드 블록을 구분한다면, 파이썬은 오직 들여쓰기 공간을 통해 제어문과 함수 범위를 결정합니다.

 


1. IndentationError: expected an indented block (구조적 누락)

이 오류는 파이썬 인터프리터가 "여기서부터는 하위 코드 블록이 시작되어야 하는데, 왜 들여쓰기가 되어 있지 않느냐"라고 묻는 것과 같습니다. 주로 조건문(if), 반복문(for, while), 함수 정의(def), 클래스 정의 뒤에 실제 실행할 코드가 오지 않았을 때 발생합니다.

발생 원인

  • if 문 뒤에 실행 코드를 바로 작성하지 않고 비워둔 경우
  • 함수를 선언만 하고 내부 로직을 작성하지 않은 경우
  • 반복문 아래의 실행 문장이 상위 문장과 동일한 열에 위치한 경우

해결 방법

가장 단순한 해결책은 해당 구문 아래에 최소 한 줄 이상의 들여쓰기 된 코드를 추가하는 것입니다. 만약 나중에 코드를 작성할 예정이라 잠시 비워두어야 한다면 pass 키워드를 사용하세요.

# 오류 발생 사례
if True:
# 아무 내용 없음 (Error!)

# 올바른 해결 방법
if True:
    print("조건이 참입니다.")

# 혹은 pass 사용
def my_function():
    pass

2. IndentationError: unindent does not match any outer indentation level (정렬 불일치)

이 오류는 들여쓰기의 깊이가 일관되지 않을 때 발생합니다. 파이썬은 동일한 코드 블록 내에서는 반드시 정확히 같은 크기의 공간을 유지해야 합니다. 단 한 칸의 오차만 있어도 파이썬은 해당 코드가 어느 블록에 속하는지 판단하지 못해 실행을 거부합니다.

발생 원인

  • 코드 블록의 시작과 끝의 들여쓰기 칸 수가 다른 경우
  • 복사한 코드와 기존 코드의 들여쓰기 설정이 다른 경우
  • 수동으로 스페이스바를 누르다 실수로 한 칸을 더 밀거나 덜 밀었을 경우

해결 방법

오류가 발생한 줄뿐만 아니라, 그 바로 윗줄과의 정렬을 확인해야 합니다. 대부분의 최신 코드 에디터(VS Code, PyCharm 등)에서는 수직 가이드라인을 제공하므로, 시각적으로 코드가 일직선상에 있는지 확인하는 습관이 중요합니다.


3. Tab과 Space 혼용 문제 (TabError: mixed spaces and tabs)

눈으로 보기에는 들여쓰기가 완벽해 보이는데 계속 오류가 난다면, 십중팔구 탭(Tab)과 공백(Space)이 섞여 있는 경우입니다. 파이썬 3 버전부터는 한 소스 코드 내에서 탭과 공백을 혼용하는 것을 엄격히 금지하고 있습니다.

어떤 줄은 탭 키로 들여쓰고, 어떤 줄은 스페이스바 4번으로 들여쓰면 시각적으로는 같아 보일지 몰라도 컴퓨터는 이를 완전히 다른 문자로 인식하여 TabError 또는 IndentationError를 발생시킵니다.

해결 및 예방책 (에디터 설정 활용)

이 문제를 해결하는 가장 좋은 방법은 에디터 설정을 변경하는 것입니다.

  • VS Code: 하단 상태 표시줄의 'Spaces: 4' 또는 'Tab Size: 4'를 클릭하여 'Convert Indentation to Spaces'를 선택하세요.
  • 공통 권장사항: 파이썬 공식 스타일 가이드(PEP 8)에서는 스페이스 4칸을 권장합니다. 에디터 설정에서 "Tab 키를 누를 때 자동으로 공백 4칸으로 변환" 옵션을 활성화하는 것이 좋습니다.

4. 개발 생산성을 높이는 들여쓰기 관리 팁

단순히 오류를 고치는 것을 넘어, 장기적으로 오류를 예방하기 위한 전문적인 팁 세 가지를 제안합니다.

자동 포매팅 도구 활용 (Linting & Formatting)

Black이나 Autopep8 같은 도구를 사용하세요. 코드를 저장할 때마다 들여쓰기를 자동으로 교정해 줍니다. VS Code 사용자의 경우 'Format on Save' 옵션을 켜두면 들여쓰기 스트레스에서 완전히 해방될 수 있습니다.

블록 단위 이동 단축키 숙지

여러 줄의 코드를 한꺼번에 들여쓰거나 내어쓸 때는 마우스를 쓰지 마세요. 블록을 지정한 후 다음 단축키를 사용하면 정밀한 조절이 가능합니다.

  • 들여쓰기: Tab
  • 내어쓰기(왼쪽으로 이동): Shift + Tab

보이지 않는 문자 표시 설정

에디터 설정에서 'Render Whitespace' 옵션을 켜면 공백은 점(·)으로, 탭은 화살표(→)로 표시됩니다. 이를 통해 혼용된 부분을 직관적으로 찾아낼 수 있습니다.


핵심 요약 정리

  1. IndentationError는 파이썬의 코드 블록 구분 약속을 어겼을 때 발생한다.
  2. 제어문(if, for 등)이나 함수 뒤에는 반드시 들여쓰기 된 실행 코드가 와야 하며, 내용이 없다면 pass를 사용한다.
  3. 탭(Tab)과 공백(Space) 혼용은 치명적인 오류의 원인이 되므로 하나로 통일한다 (권장: 스페이스 4칸).
  4. VS Code 등 에디터의 'Format on Save' 기능을 활용하여 들여쓰기를 자동화하는 것이 가장 효율적이다.