파이썬 문법 (Syntax)와 문 (Statement)

파이썬의 문(Statement)

이번에 설명할 내용은 파이썬의 문(Statement)과 식(Expression)입니다. 다른 파이썬 강의는 문과 식에 대한 설명이 없기도 하지만 저는 프로그래밍 언어에 관련된 일(정적 코드 분석)을 하다보니, 이런 식으로 접근하는 것이 좋네요. : ) 자, 각설하고 본론으로 들어가겠습니다. 문은 프로그래밍 언어(보통 명령형 언어에 한하죠..)의 가장 작은 구성 요소이며, 하나의 프로그램은 여러 개의 문으로 구성되어 있습니다. 또한 하나의 문은 여러 식을 포함할 수 있습니다.

expr_stmt

 

파이썬의 문은 그 형태로 구분하자면 복합문(Compound Statement)과 단순문(Simple Statement)으로 나눌 수 있습니다. 복합 문은 한 문 내에 또 다른 문이 중첩해서 들어갈 수 있는 문을 말하며, 단순 문은 말 그대로 그 문 자체로 행위가 종료되는 문을 말합니다. 목적에 따른 형태로 구분하자면 제어문(Conditional Statement), 반복문(Iterator), 일반문으로 나눌 수 있습니다.

파이썬 문법 (Syntax)의 특징

이제 하나의 파이썬 프로그램은 여러 개의 문으로 구성되어 있다는 사실을 알았습니다. 한국어를 쓸 때는 “한국어 문법”에 맞춰야 하듯이 파이썬의 문을 적을 때는 “파이썬 문법”에 맞춰야 합니다. 어렵지 않습니다. 도리어 파이썬은 다른 프로그래밍 언어에 비해 문법적으로 상당히 간략해서 쉬운 편입니다. C/C++, Java 와 같은 언어는 if 문을 아래와 같이 사용할 것입니다.

if ( a > b){
a = 1;
b = 2;
}

파이썬은 아래와 같이 나타냅니다.

if a > b :
a = 1
b = 2

느낌이 많이 다르죠? 이제 많은 이들이 사용하는 C계열 언어(C/C++, Java, Javascript 등)과 비교한 파이썬의 특징을 살펴보도록 하겠습니다.

1. 한 줄의 끝은 곧 한 문의 끝

C와 같은 언어에서는 하나의 문은 반드시 세미콜론(;)으로 끝내야 합니다. 하지만 파이썬은 한 줄의 끝이 바로 문의 끝입니다. 문을 적고 세미콜론 없이 리턴키를 누르면 그것으로 한 문이 완성됩니다. 세미콜론을 붙일 필요가 없습니다.

a = b + c; // Java 
a = b + c #python 

C/C++, Java 프로그래머들이 가장 흔히 하는 실수는 무의식중에 문 끝에 세미콜론을 붙이는 것입니다. 하지만 친절한 파이썬은 세미콜론을 붙였다고 문법 오류(Syntax Error)를 내지 않습니다. 파이썬 문법에서도 세미콜론을 사용하기 때문입니다. 이런 경우는 별로 없을 것 같지만 파이썬에서는 아래와 같이 한 라인에 여러 개의 문을 적고 싶을 때 세미콜론을 사용합니다.

x = 1; y = 99; z = x + y

하지만 예외사항도 있습니다. 한 줄에 모든 내용을 적을 수 없는 경우가 있습니다. 예를 들어 리스트에 값을 넣고 싶은데 너무 많아서 한 줄에 넣기 힘들 경우 아래와 같이 사용해도 됩니다.

mylist = [1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30]

튜플, 딕셔너리, 집합을 정의할 때 위와 같이 여러 줄에 걸쳐서 정의할 수 있으며 문자열은 ”’ 만 가능합니다.

다만 아래와 같이 C/Java 계열의 언어와 같이 역슬래쉬를 사용하여 줄을 나눌 순 없습니다.

X = A + B + \
C + D # ERROR 

2. 괄호는 옵션

C계열 언어는 조건문을 적을 때 반드시 조건 수식(Test condition expression) 을 괄호로 감싸야 했습니다.

while( x == 0){
...
}

하지만 파이썬은 조건 수식을 괄호로 감싸지 않아도 됩니다.

while x == 0 :
....

허나 괄호를 넣어도 됩니다.

while (x == 0):
.....

이러한 규칙은 조건 수식뿐만 아니라 각종 문에도 적용됩니다.

3. 모든 복합문의 시작은 콜론(:)으로

파이썬의 복합문은 문 안에 또 다른 문이 중첩해서 들어갈 수 있다고 앞서 언급했습니다. 이렇게 중첩된 문을 넣을 때 콜론을 사용합니다.

if x == y:
x = 1
y = 1

4. 블록을 구분할때는 중괄호 {} 대신 들여쓰기(Indentation)로

C계열 프로그래머에게는 매우 생소한 문법입니다. 파이썬은 블록을 구분할 때 중괄호 대신 들여쓰기로 구분합니다.

while x > 0: #블록 1-1
블록2-1
블록2-2
블록 2-3
블록 1-2
블록 1-3

이렇게 문법적으로 강제로 줄을 맞춰야 하기 때문에 모든 코드는 동일한 들여쓰기 규칙을 가지게 되며, 따라서 코드가 매우 읽기 쉽고, 깔끔해지는 장점이 있습니다.

사람마다 혹은 회사마다 다른 코딩 규칙 때문에 코드 가독성이 나빠지는 문제를 원천 봉쇄한 셈입니다.

 

Leave a Reply

Your email address will not be published. Required fields are marked *