Menu

파이썬 문법: 들여쓰기, 줄바꿈, 콜론, 꼭 지켜야 할 규칙들

파이썬이 정말로 신경 쓰는 최소한의 문법 규칙 — 들여쓰기, 줄바꿈, 콜론, 대소문자 구분 — 을 전문 용어 없이 풀어드려요.

세상에서 가장 얇은 규칙집

파이썬이 읽기 쉽다는 평가를 받는 이유의 대부분은, 정작 언어에 꼭 필요한 문법 규칙이 얼마 안 된다는 데서 옵니다. 중요한 규칙들은 한 페이지 안에 다 들어가요:

  • 한 줄에 한 문장.
  • 구조는 들여쓰기로 표현해요 — 중괄호도, end 같은 키워드도 없습니다.
  • 대소문자는 다릅니다. nameName은 다른 거예요.
  • :은 블록을 여는 기호예요. 그 아래 들여쓰기된 줄들이 블록의 본문이 됩니다.
  • #은 주석을 시작하는 기호예요.

사실상 이게 전부예요. 나머지는 변수, 함수, 표준 라이브러리 쓰는 습관 같은 것들인데 쓰다 보면 자연스럽게 익혀집니다. 이 다섯 가지 규칙을, 규칙처럼 느껴지기보다 언어의 자연스러운 모양처럼 느껴질 만큼 충분히 맥락을 붙여서 같이 살펴볼게요.

한 줄에 한 문장

문장(statement) 이란 완결된 명령 하나예요 — "이걸 출력해", "이것들을 더해", "저기다 할당해" 같은 것들이요. 파이썬에서는 이런 문장 하나가 각자 한 줄을 차지합니다:

main.py
Output
Click Run to see the output here.

세 문장, 세 줄이에요. 줄 끝에 세미콜론을 붙일 필요도 없고, 대부분의 파이썬 코드는 세미콜론을 쓰지 않아요. (세미콜론으로 한 줄에 두 문장을 넣을 수는 있지만 나쁜 스타일로 여겨집니다. 그러지 마세요.)

한 줄이 정말로 길어져야 하는 상황이라면, 괄호 ( ) · 대괄호 [ ] · 중괄호 { } 안쪽의 자연스러운 지점에서 줄을 끊을 수 있어요. 파이썬은 군말 않고 넘어갑니다:

main.py
Output
Click Run to see the output here.

아니면 흔치는 않지만 줄 끝에 백슬래시(\)를 붙여 다음 줄로 이어갈 수도 있어요. 가능하면 괄호 트릭 쪽을 쓰세요 — 대부분의 코드베이스가 그렇게 쓰고 있어요.

들여쓰기는 구조 그 자체예요

여기가 초보자들이 제일 많이 걸려 넘어지는 부분이에요. 파이썬에서는 줄의 _맨 앞_에 있는 공백이 의미를 가져요. 어떤 줄들이 한 덩어리인지를 그 공백이 파이썬에게 알려줍니다.

간단한 if 문을 볼게요:

main.py
Output
Click Run to see the output here.

if hour < 12: 뒤에 오는 두 줄은 공백 4칸만큼 들여쓰기가 돼 있어요. 파이썬은 그 들여쓰기를 보고 "이 두 줄이 if의 본문이구나"라고 읽습니다. 마지막 print는 다시 왼쪽 끝으로 돌아와 있으니 if 바깥에 있는 걸로 인식하고요.

들여쓰기를 빼면 if가 망가져요. 한 칸이라도 더 들여쓰면 역시 망가지고요. 파이썬은 이 부분에서 엄격한데, 들여쓰기 자체가 구조이기 때문이에요 — {end처럼 대신 받쳐줄 게 없거든요.

여기서 자연스럽게 따라 나오는 규칙 몇 가지:

  1. 한 단계에 공백 4칸으로 정하고 계속 그대로 가세요. PEP 8 표준이고, 어떤 에디터든 .py 파일은 기본적으로 그렇게 맞춰져 있어요.
  2. 탭과 공백을 섞지 마세요. Python 3은 둘을 섞은 파일을 거부합니다. 요즘 에디터들은 저장할 때 탭을 자동으로 공백으로 바꿔주니, 그렇게 설정돼 있는지 확인해 두세요.
  3. 들여쓰기 에러는 언젠가 마주칠 거예요. 그때 에러 메시지는 몇 번째 줄인지 알려줍니다. 그 줄의 맨 앞 공백이 같은 블록의 다른 줄들과 맞는지 확인해 보세요.

콜론은 블록을 여는 문

중첩 블록을 만드는 모든 구문 — if, else, for, while, def, class, with, try — 은 헤더 줄이 콜론(:)으로 끝나요. 그 아래 들여쓰기된 줄들이 블록 본문이 됩니다:

main.py
Output
Click Run to see the output here.

두 가지를 눈여겨보세요. 헤더 끝의 콜론, 그리고 본문 줄들의 공백 4칸 들여쓰기. 콜론을 빠뜨리면 파이썬이 SyntaxError: expected ':' 같은 메시지를 띄워줘요. 이 에러는 오해의 여지가 없어요 — 빠진 기호만 채우면 끝입니다.

대소문자 구분

파이썬에게 Name, name, NAME은 완전히 별개의 세 가지예요. 이건 다음 모두에 적용됩니다:

  • 내가 만든 변수와 함수.
  • print, len, True, False, None 같은 내장 이름들.
  • 모듈 이름과 속성 이름.

보통은 실수로 대문자를 잘못 썼을 때 문제를 일으켜요. True는 불(boolean)의 참 값이고, true는 정의된 적 없는 변수라서 NameError가 납니다. Print(...)print 함수가 아니라 — 그냥 오타예요.

"name 'X' is not defined"라는 에러가 떴는데 분명히 정의한 기억이 있다면, 제일 먼저 대소문자부터 확인해 보세요. 열 번 중 아홉 번은 그게 원인이에요.

#으로 주석 달기

한 줄에서 # 뒤에 오는 건 모두 주석이에요 — 파이썬이 통째로 무시합니다. 주석은 나중에 읽을 사람(미래의 자신도 포함) 을 위한 메모예요:

main.py
Output
Click Run to see the output here.

파이썬에는 여러 줄 주석 문법이 따로 없어요. 여러 줄이 필요하면 #을 여러 줄에 걸쳐 쓰세요. (가끔 삼중 따옴표 문자열을 주석처럼 쓰는 경우를 볼 수 있는데, 그건 따로 'docstring'이라고 부르는 별개의 개념이고 함수를 다룰 때 같이 설명드릴게요.)

예약어

파이썬이 자체적으로 쓰고 있기 때문에 변수 이름으로 못 쓰는 단어들이 몇 개 있어요: if, else, for, while, def, class, return, import, from, as, pass, break, continue, True, False, None, and, or, not, in, is, lambda, try, except, finally, raise, with, yield, global, nonlocal, async, await. 이 목록을 외울 필요는 없어요. 실수로 쓰려고 하는 순간 파이썬이 곧바로 지적해 주거든요.

이제 어떤 파이썬 파일이든 읽을 수 있어요

방금 읽은 모든 규칙은 어떤 파이썬 파일에든 똑같이 적용됩니다 — 두 줄짜리 스크립트든, 10만 줄짜리 프로젝트든 말이에요. 나머지 언어 기능은 전부 이 다섯 가지 생각 위에 얹혀 있어요. 어떤 파일이 헷갈려 보이면, 해결책은 거의 언제나 들여쓰기부터 먼저 보는 거예요. 각 줄이 무슨 내용을 담고 있는지 읽기 전에도, 들여쓰기만 봐도 코드가 뭘 하는지 알 수 있어요.

다음 문서에서는 주석을 조금 더 깊이 다루고, docstring — 파이썬이 함수와 모듈의 문서를 어떻게 다루는지 — 까지 이어집니다.

자주 묻는 질문

파이썬은 왜 들여쓰기를 그렇게 따지나요?

파이썬은 어떤 줄들이 한 덩어리인지를 들여쓰기로 판단해요. 다른 언어들이 { } 같은 중괄호로 코드 묶음을 감싸는 자리에, 파이썬은 일정한 공백을 대신 씁니다. 화면이 덜 복잡해지는 대신, 공백을 아무렇게나 쓸 수는 없게 되죠.

파이썬에서 들여쓰기는 공백 몇 칸이 적당한가요?

한 단계당 공백 4칸이 커뮤니티 표준이에요(PEP 8). 대부분의 에디터는 .py 파일에서 Tab을 누르면 자동으로 공백 4칸을 넣어줍니다. 정확한 칸 수보다 더 중요한 건 일관성 — 같은 블록 안에서 2칸 들여쓰기와 4칸 들여쓰기를 섞는 게 흔한 실수예요.

파이썬은 대소문자를 구분하나요?

네, 구분합니다. Name, name, NAME은 서로 다른 세 개의 변수예요. printTrue 같은 내장 이름은 쓰여 있는 그대로 써야 해요 — True는 되지만 true는 에러가 납니다.

Coddy로 코딩 배우기

시작하기