Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)에서 ++, -- 연산자의 동작 원리 완벽 정리

파이썬에는 증감 연산자가 존재하지 않는다

C/C++나 Java 같은 언어에서 ++--는 값을 1씩 증가·감소시키는 증감 연산자로 정의되어 있습니다. 그러나 파이썬(Python)에는 이러한 연산자가 아예 정의되어 있지 않습니다.

그 이유: 객체와 변수의 구조적 차이

파이썬은 모든 데이터를 메모리에 객체(object) 형태로 저장하고, 변수는 단순히 그 객체를 가리키는 라벨(label)에 불과합니다. 특히 숫자형(int, float) 객체는 불변(immutable)이므로 한 번 생성된 값 자체를 변경할 수 없습니다. 따라서 기존 값을 직접 수정하는 방식의 증감 연산은 성립하지 않습니다.

전위(++a) 연산: 에러는 없지만 동작하지 않음

흥미롭게도 전위 형태인 ++a--b는 문법 오류가 발생하지 않지만, 의도한 대로 동작하지도 않습니다.

>>> a = 5
>>> b = 6
>>> ++a
5
>>> --b
6

이것은 버그처럼 보일 수 있지만, 사실 파이썬 인터프리터가 ++a단항 덧셈 연산자(+)를 두 번 적용한 것으로 해석하기 때문입니다. 즉 +(+a)로 처리되어 결과적으로 a의 값 그대로 5가 반환됩니다. 마찬가지로 --b-(-b), 즉 이중 부호로 해석되어 6이 그대로 출력됩니다.

후위(a++) 연산: 문법 오류 발생

반면 후위 형태인 a++b--SyntaxError를 일으킵니다.

>>> a = 5
>>> b = 6
>>> a++
SyntaxError: invalid syntax
>>> b--
SyntaxError: invalid syntax

파이썬에는 후위 증감 연산이라는 개념 자체가 없기 때문에 인터프리터가 해당 표현식을 해석할 수 없어 오류가 발생합니다.

파이썬에서 올바른 증감 방법

C 스타일의 증감 연산자 대신 파이썬에서는 복합 할당 연산자를 사용해야 합니다.

>>> a = 5
>>> a += 1   # a++에 해당
>>> print(a)
6
>>> a -= 1   # a--에 해당
>>> print(a)
5

핵심 요약

  • 파이썬에는 ++, -- 연산자가 공식적으로 존재하지 않습니다.
  • 전위(++a): 문법상 허용되지만 단항 + 연산자의 중복 적용으로 해석되어 값이 변하지 않습니다.
  • 후위(a++): SyntaxError가 발생합니다.
  • 대안: a += 1 또는 a -= 1을 사용하세요.