프로그래밍을 처음 배우면 변수나 함수 같은 말에 먼저 겁을 먹는다. 그런데 정작 매일 손에 붙어 다니는 건 따로 있다. 바로 파이썬 연산자다. 숫자를 더하고, 두 값을 비교하고, 조건을 묶는 일. 코드를 한 줄이라도 짜면 반드시 연산자를 거친다. 기초라는 말은 곧 “반드시 알아야 한다”는 뜻이다.

파이썬 연산자는 모든 프로그래밍의 기초다
파이썬은 다른 언어와 마찬가지로 기본 연산과 비교 연산, 논리 연산을 위한 연산자를 제공한다. 몫이나 거듭제곱처럼 특수한 문법 몇 개를 빼면, 대부분의 언어에서 거의 같은 모양으로 쓰인다. 그러니 여기서 익히는 건 파이썬 하나에만 통하는 지식이 아니다. 자바스크립트를 만지든 자바를 만지든 그대로 써먹는 평생 자산이다.
먼저 코드의 기초 체력을 다지고 싶다면 파이썬 주석 다는 법부터 짚고 오는 것도 좋다. 그럼 연산자를 종류별로 하나씩 뜯어보자.
산술 연산자: 계산의 기본
사칙 연산을 할 때 쓰는 연산자다. 덧셈과 뺄셈은 학교에서 배운 기호 그대로지만, 곱셈과 나눗셈은 모양이 조금 다르다.
| 연산자 | 설명 |
|---|---|
|
+
|
덧셈
|
|
–
|
뺄셈
|
|
*
|
곱셈
|
|
/
|
나누기
|
|
//
|
나눗셈의 몫 구하기
|
|
%
|
나눗셈의 나머지 구하기
|
|
**
|
거듭제곱 (하나의 수를 반복해서 곱함)
|
학교에서 곱셈은 ×, 나눗셈은 ÷로 배웠다. 그런데 파이썬을 포함한 대부분의 언어는 곱셈에 별표 기호를, 나눗셈에 빗금(/)을 쓴다. 여기에 파이썬은 빗금 두 개로 나눗셈의 몫을, 퍼센트 기호(%)로 나머지를, 별표 두 개로 거듭제곱을 구하는 기호를 더 얹었다. 정확한 모양은 위 표에서 확인할 수 있다.
//와 %가 처음엔 낯설지만, 알고 보면 쓸모가 많다. 어떤 수를 2로 나눈 나머지가 0이면 짝수, 1이면 홀수다. 그래서 나머지 연산은 짝수와 홀수를 가릴 때 단골로 등장한다. 데이터를 여러 그룹으로 고르게 나눌 때도 이 연산을 쓴다. 직접 입력해서 결과를 확인해 보자.
# 더하기
a = 123 + 456
print('a = ', a)
# 빼기
b = 456 - 123
print('b = ', b)
# 곱하기
c = 12 * 34
print('c = ', c)
# 나누기
d = 34 / 12
print('d = ', d)
# 몫 구하기
e = 34 // 12
print('e = ', e)
# 나머지 구하기
f = 56 % 8
print('f = ', f)
# 거듭제곱
g = 5 ** 8
print('g = ', g)
a = 579
b = 333
c = 408
d = 2.8333333333333335
e = 2
f = 0
g = 390625
여기서 /와 //의 차이를 눈여겨보자. 34 / 12는 소수점까지 나오지만, 34 // 12는 정수 몫인 2만 남는다. 같은 나눗셈인데 결과 타입이 달라진다.
비교 연산자: 크기를 따지다
비교 연산자는 두 데이터 중 어느 쪽이 더 크거나 작은지, 또는 같은지를 따진다. 결과는 늘 참(True) 아니면 거짓(False)으로 나온다.
| 연산자 | 설명 |
|---|---|
|
>
|
x는 y보다 크다
|
|
>=
|
x는 y와 같거나 크다
|
|
<
|
x는 y보다 작다
|
|
<=
|
x는 y와 같거나 작다
|
|
==
|
x는 y와 같다
|
|
!=
|
x와 y는 같지 않다
|
입문자가 가장 많이 헷갈리는 지점이 =와 ==다. 생긴 건 비슷해도 역할은 완전히 다르다. 등호 하나(=)는 변수에 값을 넣을 때 쓰는 대입 연산자다. 등호 둘(==)은 두 값이 같은지 비교하는 연산자다. 이걸 헷갈리면 의도와 전혀 다른 코드가 된다. 변수 개념이 더 궁금하면 파이썬 기초 연산자와 변수에서 같이 짚어 두자.
a = 5 > 2
print('a = ', a)
b = 5 >= 2
print('b = ', b)
c = 5 < 2
print('c = ', c)
d = 5 <= 2
print('d = ', d)
e = 5 == 2
print('e = ', e)
f = 5 != 2
print('f = ', f)
a = True
b = True
c = False
d = False
e = False
f = True
5는 2보다 크니까 5 > 2는 True, 5는 2보다 작지 않으니 5 < 2는 False다. 생각보다 단순하다.
논리 연산자: 조건을 묶다
and, or, not은 조금 특별하다. 여러 조건을 하나로 묶어 복합 조건을 만들 때 쓴다. 참과 거짓을 다룬다고 해서 부울 연산자라고도 부른다. 다른 언어에서는 같은 역할을 &&, ||, !로 표현하기도 하는데, 파이썬은 영어 단어를 그대로 써서 읽기 쉽다.
and: 둘 다 참이어야 참
and는 A와 B가 모두 True일 때만 True가 된다. 하나라도 거짓이면 전체가 거짓이다.
| A | B | Result |
|---|---|---|
|
True
|
True
|
True
|
|
True
|
False
|
False
|
|
False
|
True
|
False
|
|
False
|
False
|
False
|
a = (3 < 4) and (5 < 6)
print('a = ', a)
b = (3 < 4) and (5 > 6)
print('b = ', b)
c = (3 > 4) and (5 < 6)
print('c = ', c)
d = (3 > 4) and (5 > 6)
print('d = ', d)
a = True
b = False
c = False
d = False
or: 하나만 참이어도 참
or는 반대다. A나 B 둘 중 하나만 참이어도 True가 된다. 둘 다 거짓일 때만 False다.
| A | B | Result |
|---|---|---|
|
True
|
True
|
True
|
|
True
|
False
|
True
|
|
False
|
True
|
True
|
|
False
|
False
|
False
|
a = (3 < 4) or (5 < 6)
print('a = ', a)
b = (3 < 4) or (5 > 6)
print('b = ', b)
c = (3 > 4) or (5 < 6)
print('c = ', c)
d = (3 > 4) or (5 > 6)
print('d = ', d)
a = True
b = True
c = True
d = False
not: 참과 거짓을 뒤집다
not은 단항 연산자다. 단항이란 피연산자가 하나뿐이라는 뜻이다. 참을 거짓으로, 거짓을 참으로 뒤집는다.
| A | not A |
|---|---|
|
True
|
False
|
|
False
|
True
|
한 걸음 더: 자주 쓰는 연산자들
산술·비교·논리, 이 세 가지가 핵심이다. 하지만 실전에서 자주 마주치는 연산자가 몇 개 더 있다. 입문 단계에서 눈에 익혀 두면 나중에 코드가 한결 짧아진다.
먼저 복합 할당 연산자다. a = a + 1처럼 자기 값에 무언가를 더해 다시 넣는 일이 잦은데, 이걸 a += 1로 줄여 쓴다. -=, *=, /=도 같은 방식이다.
다음은 멤버십 연산자 in과 not in이다. 어떤 값이 리스트나 문자열 안에 있는지 확인할 때 쓴다.
fruits = ['사과', '바나나', '포도']
print('사과' in fruits) # True
print('수박' not in fruits) # True
동일성 연산자 is와 is not도 있다. ==가 “값이 같은가”를 묻는다면, is는 “아예 같은 객체인가”를 묻는다. 특히 값이 비어 있는지 확인할 때 if x is None:처럼 쓰는 게 정석이다.
마지막으로 바다코끼리 연산자(:=)다. 파이썬 3.8에서 새로 들어온 문법으로, 값을 변수에 넣으면서 동시에 그 값을 바로 쓰는 연산자다. 기호 모양이 바다코끼리의 눈과 엄니를 닮아 이런 별명이 붙었다. 자세한 도입 배경은 파이썬 3.8 새 기능 공식 문서에 정리돼 있다.
# 바다코끼리 연산자 없이
data = input("입력: ")
while data != "quit":
print(data)
data = input("입력: ")
# 바다코끼리 연산자로 한 줄에
while (data := input("입력: ")) != "quit":
print(data)
처음부터 다 외울 필요는 없다. 산술·비교·논리부터 손에 익히고, 나머지는 코드를 짜다 필요할 때 하나씩 끌어다 쓰면 된다.
헷갈리지 않게, 연산자 체크리스트
기초를 한 번에 정리하자.
=는 값을 넣을 때,==는 값을 비교할 때 쓴다/는 소수까지,//는 정수 몫만 남긴다- 짝수·홀수 판별은
% 2로 한다 and는 둘 다 참,or는 하나만 참이어도 참이다- 값이 비었는지 볼 때는
== None이 아니라is None을 쓴다
각 연산자가 어떤 순서로 계산되는지(연산자 우선순위) 더 깊이 보고 싶다면 파이썬 공식 표준 타입 문서가 가장 믿을 만한 기준이다.
작은 기호가 만드는 큰 차이
파이썬 연산자는 화려하지 않다. 그냥 기호 몇 개다. 하지만 이 기호들이 모여 조건을 만들고, 계산을 돌리고, 프로그램의 흐름을 결정한다. 기초가 단단해야 그 위에 뭐든 쌓을 수 있다.
오늘 본 예제를 그냥 읽고 넘기지 말고, 한 줄씩 직접 입력해서 결과를 눈으로 확인해 보자. 손으로 쳐 본 코드만 진짜 내 것이 된다. 연산자가 손에 붙었다면, 다음은 컴퓨터가 다루는 가장 기본 데이터인 파이썬의 정수로 넘어가거나, 더 넓게 파이썬 개발을 위한 현대적 모범 사례를 둘러보자. 기초 하나하나가 결국 실력이 된다.
참고 자료: Python Software Foundation, "Python 3.8의 새로운 기능"