Python의 들여쓰기(Indentation)란?
Python은 C나 Java 같은 다른 언어와 달리, 클래스·함수 정의나 조건문·반복문 등 흐름 제어에서 코드 블록을 표시할 때 중괄호({})를 사용하지 않습니다. 대신 줄 들여쓰기(line indentation)로 블록을 구분하며, 이 규칙은 매우 엄격하게 적용됩니다.
들여쓰기에 사용하는 공백의 개수는 자유롭게 정할 수 있지만, 같은 블록에 속한 모든 문장은 반드시 동일한 깊이로 들여써야 합니다. 그렇지 않으면 인터프리터가 즉시 오류를 발생시킵니다.
올바른 들여쓰기 예제
if True:
print("True")
else:
print("False")위 코드에서 if 문과 else 문에 속한 print 문은 각각 같은 깊이로 들여쓰기되어 있으므로 정상적으로 실행됩니다.
잘못된 들여쓰기 예제
반면, 아래처럼 같은 블록 안에서 들여쓰기 깊이가 일치하지 않으면 IndentationError가 발생합니다.
if True:
print("Answer")
print("True") # 들여쓰기 불일치 → 오류!
else:
print("Answer")
print("False") # 들여쓰기 불일치 → 오류!따라서 Python에서는 동일한 수의 공백으로 연속해서 들여쓰기된 줄들이 하나의 블록을 형성한다고 이해하면 됩니다.
여러 블록이 포함된 실전 예제
다음 예제는 try-except, while, if 등 다양한 문장 블록이 중첩된 형태를 보여줍니다.
참고: 학습 초기 단계에서는 코드의 논리를 완전히 이해하려 하지 않아도 됩니다. 중괄호 없이도 각 블록이 어떻게 들여쓰기로 구분되는지만 파악하면 충분합니다.
#!/usr/bin/python
import sys
try:
# 파일 스트림 열기
file = open(file_name, "w")
except IOError:
print("파일 쓰기 오류:", file_name)
sys.exit()
print("'", file_finish, "' 입력 시 종료됩니다")
while file_text != file_finish:
file_text = input("텍스트 입력: ")
if file_text == file_finish:
# 파일 닫기
file.close()
break
file.write(file_text)
file.write("\n")
file.close()
file_name = input("파일 이름 입력: ")
if len(file_name) == 0:
print("다음에는 값을 입력해 주세요")
sys.exit()
try:
file = open(file_name, "r")
except IOError:
print("파일 읽기 오류")
sys.exit()
file_text = file.read()
file.close()
print(file_text)들여쓰기 작성 시 유의사항
- 공백 4칸 권장: Python 공식 스타일 가이드인 PEP 8은 들여쓰기에 공백 4칸 사용을 권장합니다.
- 탭과 공백 혼용 금지: 탭(Tab)과 공백(Space)을 섞어 쓰면 겉보기에는 같아 보여도 오류가 발생할 수 있습니다. 에디터 설정에서 탭을 공백으로 변환하도록 지정하는 것이 좋습니다.
- 블록 단위 일관성: 하나의 블록 내 모든 문장은 정확히 같은 깊이를 유지해야 하며, 한 칸이라도 어긋나면
IndentationError또는 의도하지 않은 동작이 발생합니다. - 빈 블록 처리: 실행할 코드가 없는 블록에는
pass문을 사용해야 문법 오류를 피할 수 있습니다.
들여쓰기는 Python 문법의 핵심 요소입니다. 처음에는 낯설게 느껴질 수 있지만, 일관된 들여쓰기 습관을 들이면 코드의 가독성과 구조가 크게 향상됩니다.