Python에 ++, -- 연산자가 없는 이유(전위/후위 증감 연산자)
서론
바쁘시다면, 이 섹션은 건너뛰세요.
Python
은 가히 2010년대에 가장 사랑받고 있는 프로그래밍 언어라고 할 만하다. 어마어마한 양의 라이브러리들과 프로젝트들이 빌드되었으며, 현재도 끊임없이 발전되고 있는 언어임에 분명하다.
파이썬의 위상을 여실히 알 수 있는 것이 바로 소프트웨어 교육(절대 코딩 교육이 아니다. 코딩 교육 한다고 하는 곳을 발견하면 얼른 도망쳐라) 분야이다. 10년 전만 해도 처음 소프트웨어 교육에 입문하면 배우게 되는 것이 바로 악명높은 C/C++
이었다. 나 역시도 대학 1학년 때 C언어를 접하고 적지 않은 충격을 받았고 나는 개발자가 될 수 없을 거야.. 라며 MATLAB
을 공부했었다. (하지만 결국 C언어를 다시 잡게 될 줄은 꿈에도 몰랐다.)
현재 대부분의 소프트웨어 교육은 파이썬을 중심으로 이루어지고 있다. 간결하고, 이해하기 쉽고, 인터프리터 언어라는 점 때문에 그 동안 코딩과는 담 쌓고 지냈던 많은 사람들도 코딩의 세계로 들어오고 있다.
++, -- 연산자의 역할
C/C++
과 같은 고전 프로그래밍 언어에서 ++
과 --
는 간편하지만 복잡한 문법을 지니고 있는 양날의 검과 같은 존재였다.
-
변수의 증감
for(int i=0; i<10; i++}
-
포인터 연산
ptr++;
위 사례들과 같이 편리하게 선언이 가능하지만, 만일 변수의 증감을 표현하고자 할 때, for(int i=0; i<10; ++i}
라는 코드를 보게 되면 숙련자가 아닌 이상 헷갈릴 수밖에 없다. C언어에서는 전위 연산자와 후위 연산자를 통해 수식을 간단하게 표현할 수 있지만, 직접 코드를 작성하지 않은 제3자가 볼 때에는 이해하기 힘든 것이 사실이다.
Python은 왜 ++, --가 없는가
이는 명확한, 공식적인 답변은 없다. 하지만, 파이썬의 핵심 철학 중 하나인 "명시적인 것이 암시적인 것 보다 낫다." (Explicit is better than implicit)에 의하면 ++
와 --
연산자는 너무 암시적이다. 실제로 C
에서 해당 연산자로 포인터 연산을 해본 사람이라면 연산자가 전위일 때와 후위일 때 한참 생각해보고 코드를 이해했던 기억이 있을 것이다. 그렇기 때문에 증감 연산시 +=
, -=
와 같은 표현을 하는 것이 훨씬 명시적이고 이해하기 쉽다.
a+=1 // a++
그렇기 때문에 해당 증감 연산자를 파이썬에서 지원하지 않는 것이라고 추측할 수 있지만, 정확한 이유는 파이썬을 고안한 귀도 반 로섬만이 알고 있을 것이다.