📝 🔍 복잡한 내용, 딱 3가지로 압축한다면?
- 들여쓰기(Indentation) 규칙을 어기면 발생하는 IndentationError, 초보자의 단골 오류입니다.
- 공백과 탭 혼용, 잘못된 블록 구분, 코드 라인 끝 불필요한 공백이 주요 원인입니다.
- 텍스트 편집기의 설정 변경과 자동 서식 기능을 활용하면 쉽게 해결할 수 있습니다.
2024년 늦가을, 퇴근 후 집에서 조용히 파이썬 공부를 하던 때였습니다. 카페인과 함께 달콤한 야식을 즐기며 간단한 웹 스크래핑 프로그램을 짜고 있었죠. 마치 스타벅스에서 아이스 아메리카노를 마시듯, 코딩도 뭔가 감성적으로 접근하면 더 잘 될 거라고 막연히 생각하던 시절이었습니다. 처음에는 의욕에 넘쳐 금방 끝낼 수 있을 것 같았지만, 예상치 못한 에러 메시지가 화면을 뒤덮었습니다.
Python IndentationError: 대체 이게 무슨 에러야?

“그냥 맞춤법 틀린 거겠지…” 잘못된 희망

처음에는 단순히 오타를 냈거나, 문법을 잘못 썼다고 생각했습니다. 그래서 비슷한 다른 코드들을 찾아보며 제 코드와 한 글자 한 글자 비교해봤습니다. 예를 들어, `if` 문 뒤에 콜론(`:`)을 빠뜨렸는지, 변수 이름을 잘못 썼는지 등을 꼼꼼히 확인했죠. 하지만 아무리 봐도 명백한 문법 오류는 보이지 않았습니다. 혹시나 하는 마음에 해당 줄의 띄어쓰기를 일일이 다시 수정해보기도 했습니다. 마치 엑셀에서 복잡한 함수를 작성하다가 오류가 났을 때, 셀 하나하나를 다시 클릭해보는 것처럼 말이죠. 하지만 이런 헛수고만 반복될 뿐, 에러는 사라지지 않았습니다.
구글링의 늪: 혼란만 가중된 검색의 시간
당황스러움을 뒤로하고 급하게 구글링을 시작했습니다. “python IndentationError”, “파이썬 들여쓰기 오류 해결”. 수많은 검색 결과가 쏟아졌지만, 문제는 더 복잡해졌습니다. 어떤 글에서는 ‘탭과 공백을 혼용하지 말라’고 하고, 어떤 글에서는 ‘공백은 4개씩 들여쓰라’고 하고, 또 어떤 글에서는 ‘코드 편집기 설정을 바꿔야 한다’고 했습니다. 각기 다른 해결책들이 마치 춘추전국시대처럼 제시되니, 오히려 무엇이 진짜 문제인지, 어떤 방법을 먼저 시도해야 할지 혼란스러울 뿐이었습니다. 마치 해외여행 가서 언어가 통하지 않아 여러 사람에게 길을 물었지만, 다 다른 방향을 가르쳐주는 상황과 비슷했죠.
진실은 저 너머에: IndentationError의 핵심 원인 파헤치기

1. 공백(Space)과 탭(Tab)의 은밀한 충돌
잘못된 예시:
if True:
print("Hello") # 여기는 공백 4개
print("World") # 여기는 탭 문자가 섞였거나 공백이 7개 등
2. 코드 블록의 잘못된 시작과 끝
콜론(`:`)을 빠뜨리거나, 콜론이 있는 줄 다음에 들여쓰기를 하지 않는 경우입니다. `if` 문, `for` 루프, 함수 정의(`def`) 등 새로운 코드 블록을 시작할 때는 반드시 콜론이 와야 하며, 다음 줄은 반드시 더 안쪽으로 들여쓰기가 되어 있어야 합니다. 이 규칙을 어기면 파이썬은 코드의 범위를 제대로 인식하지 못합니다.
잘못된 예시:
def my_function() # 콜론이 없습니다.
print("This is incorrect")
for i in range(5): # 콜론이 있지만, 다음 줄 들여쓰기가 없습니다.
print(i)
3. 코드 라인 끝의 불필요한 공백
잘못된 예시:
print("This line has trailing spaces.")
주의사항
IndentationError는 단순히 문법 오류를 넘어 파이썬의 코드 구조를 정의하는 중요한 규칙입니다. 이 규칙을 무시하고 단순히 에러 메시지만 보고 넘어가면, 이후 더 복잡하고 어려운 에러에 직면했을 때 근본적인 해결 능력이 떨어질 수 있습니다. 따라서 초반에 들여쓰기 규칙을 확실히 이해하고 습관화하는 것이 매우 중요합니다.
IndentationError, 이 방법으로 확실히 해결하자!
1. 텍스트 편집기의 ‘탭’을 ‘공백’으로 통일하기
가장 근본적인 해결책입니다. 대부분의 파이썬 개발 환경에서는 탭 문자를 공백 4개로 자동 변환해주는 설정을 제공합니다. 이 설정을 활성화하면, 탭 키를 눌러도 실제로는 공백이 삽입되어 탭과 공백이 혼용되는 문제를 원천적으로 차단할 수 있습니다.
- Visual Studio Code (VS Code) 사용 시:
- `File` > `Preferences` > `Settings` (또는 `Ctrl + ,`) 메뉴로 들어갑니다.
- 검색창에 `tab`을 입력합니다.
- `Editor: Tab Size`를 `4`로 설정합니다.
"editor.insertSpaces": true설정이 활성화되어 있는지 확인합니다. (기본값으로 활성화되어 있을 가능성이 높습니다.)
- PyCharm 사용 시:
- `File` > `Settings` (또는 `Ctrl + Alt + S`) 메뉴로 들어갑니다.
- `Editor` > `Code Style` > `Python`으로 이동합니다.
- `Tabs and Indents` 탭에서 `Use tab character` 대신 `Use space characters`를 선택하고, `Tab size`와 `Indent`를 `4`로 설정합니다.
- 기타 에디터: 대부분의 코드 편집기는 유사한 설정을 제공합니다. ‘탭 설정’, ‘들여쓰기 설정’과 같은 키워드로 검색해보세요.
2. 자동 서식(Format) 기능 활용하기
최신 IDE나 코드 편집기들은 작성된 코드를 자동으로 깔끔하게 정리해주는 ‘코드 포맷터’ 기능을 제공합니다. 이 기능을 사용하면 들여쓰기 오류는 물론, 코드 스타일을 일관되게 유지하는 데 큰 도움을 받을 수 있습니다. 마치 맥북의 ‘메모’ 앱에서 텍스트를 붙여넣으면 자동으로 서식이 적용되는 것처럼 편리합니다.
VS Code에서 자동 서식 사용하기:
- 설치된 포맷터 (예: Black, autopep8)가 있다면, 코드를 저장할 때마다 자동으로 서식이 적용되도록 설정할 수 있습니다. (`File` > `Preferences` > `Settings`에서 `editor.formatOnSave` 검색 후 활성화)
- 또는, 코드를 선택한 후 `Shift + Alt + F` (Windows/Linux) 또는 `Shift + Option + F` (macOS) 단축키를 눌러 수동으로 서식을 적용할 수 있습니다.
3. 코드 라인 끝의 불필요한 공백 제거하기
이 문제는 코드 편집기의 ‘트레일링 공백(Trailing Whitespace)’ 제거 설정을 통해 해결할 수 있습니다.
VS Code에서 트레일링 공백 제거하기:
- `File` > `Preferences` > `Settings`에서 `trailing whitespace`를 검색합니다.
- `Editor: Trim Trailing Whitespace` 옵션을 활성화합니다.
4. ‘나만의 체크리스트’로 습관 만들기
아무리 좋은 도구가 있어도, 기본적인 규칙을 인지하지 못하면 실수는 반복됩니다. IndentationError를 방지하기 위한 간단한 체크리스트를 만들어 습관처럼 확인하는 것이 좋습니다.
IndentationError 방지 체크리스트
- 새로운 코드 블록(if, for, def 등)을 시작할 때 콜론(:)을 꼭 붙였는가?
- 콜론(:) 다음 줄은 반드시 들여쓰기가 되어 있는가?
- 코드 전체에서 탭과 공백이 혼용되지 않고 일관되게 사용되었는가? (에디터 설정 확인!)
- 불필요한 코드 라인 끝의 공백은 없는가?
- 들여쓰기 간격이 일관적인가? (보통 4칸 공백)
마무리하며: IndentationError, 이제 두렵지 않아요!
솔직히 말해서, IndentationError는 처음 코딩을 배울 때 가장 자주, 그리고 가장 짜증 나게 만나는 오류 중 하나입니다. 하지만 이 오류의 근본 원인을 이해하고, 사용하는 개발 도구의 설정을 올바르게 조정하는 법을 익힌다면, 이 오류는 더 이상 우리를 괴롭히지 못할 것입니다. 오히려 파이썬이 코드의 구조를 얼마나 중요하게 생각하는지를 알려주는 좋은 ‘교훈’으로 받아들일 수 있습니다.
궁금한 점이 있다면 언제든 댓글로 남겨주세요. 여러분의 코딩 여정을 응원합니다!















