연산자는 행동을 나타내는 기호예요
연산자는 한두 개의 값을 가지고 뭔가 하라고 파이썬에게 알려주는 기호(또는 짧은 키워드)예요 — 더해라, 비교해라, 한쪽이 다른 쪽을 품고 있는지 봐라, 이런 거요. 기본적인 수학에서 이미 몇 개는 알고 계실 텐데, 파이썬은 논리·포함·동일성용으로 몇 개를 더 가지고 있어요.
주요 범주를 하나씩 살펴볼게요.
산술 연산자
표준 수학 연산자들과 파이썬 고유의 몇 가지:
이 목록에서 잊기 쉬운 두 가지:
/는 양쪽이 정수여도 float을 돌려줘요.10 / 2는5.0이 나옵니다. 정수 나눗셈이 필요하면//를 쓰세요.%는 나머지예요.n이 짝수인지 가장 깔끔하게 검사하는 방법은n % 2 == 0이에요.
파이썬은 일반적인 수학 우선순위를 따릅니다. **가 *, /보다 강하게 묶이고, 그 둘이 +, -보다 강해요. 괄호가 모든 것보다 우선합니다:
조금이라도 헷갈린다면 괄호를 넉넉히 쓰세요. 비용은 없고, 의도가 분명해집니다.
비교 연산자
여섯 가지 비교, 각각 불리언을 반환해요:
파이썬은 비교를 _체이닝_할 수 있게 해줍니다. 흔치 않으면서 유용해요:
"age가 18 이상이고 65 미만이다"로 읽힙니다. 내부적으로는 18 <= age and age < 65와 같지만 수학 문법 쪽에 더 가까워요.
논리 연산자
기호 대신 영어 단어로 씁니다:
알아둘 만한 세부사항 두 가지:
단축 평가(short-circuit). and는 첫 번째 falsy 값에서 멈추고, or는 첫 번째 truthy 값에서 멈춰요. 왼쪽에서 결과가 이미 결정되면 오른쪽은 평가되지도 않습니다. 덕분에 에러를 안전하게 막을 수 있어요:
and/or는 꼭 True/False가 아니라 값을 돌려줘요. 결과를 결정한 피연산자를 그대로 돌려줍니다:
실무 코드에서 name = user_input or "anonymous" 같은 걸 보게 될 거예요 — 이 동작에 기반한 기본값 패턴이에요.
할당 연산자
=은 할당해요. 복합 할당은 연산과 할당을 합친 거고요:
복합 형태는 문자열(s += "more")과 리스트(lst += [4, 5])에서도 동작해요. 원래 형태보다 빠르지는 않아요 — 그저 짧을 뿐입니다.
멤버십: in과 not in
어떤 컨테이너 안에 값이 있는지 검사합니다:
in은 어떤 이터러블에서도 동작해요 — 리스트, 튜플, 집합, 문자열, 딕셔너리 등등. 큰 데이터에서 리스트에 대한 in은 O(n), 집합이나 딕셔너리에 대한 in은 O(1)입니다. 멤버십 검사를 여러 번 할 때부터는 이 차이가 의미 있어집니다.
동일성: is와 is not
is는 두 변수가 값이 같은지가 아니라 _메모리 상 같은 객체_를 가리키는지를 검사합니다:
거의 언제나 ==가 맞아요. is가 진짜 빛나는 유일한 곳은 None, True, False와의 비교입니다:
커뮤니티 관례는 확고해요. == None이 아니라 is None을 쓰세요. is True도 마찬가지고요(이건 쓸 일이 많지는 않아요).
비트 연산자 (처음엔 건너뛰어도 돼요)
파이썬에는 비트 연산자도 있어요 — &, |, ^, ~, <<, >> — 정수의 개별 비트를 다루는 용도예요. 암호학, 저수준 네트워킹, 특정 알고리즘에서 유용합니다. 처음 한 바퀴에서는 건너뛰어도 무방해요.
왈러스 연산자 (:=)
Python 3.8에서 :=이 추가됐어요. 한 표현식 안에서 값을 할당함과 동시에 돌려주는 연산자예요. 결과를 잡아두면서 동시에 검사하고 싶은 조건문에 유용합니다:
왈러스가 없었다면 len(numbers)를 두 번 부르거나 줄을 하나 더 써야 했을 거예요. 필수는 아니고, 중복을 줄여주는 자리에서만 쓰세요.
연산자 우선순위 치트시트
실제로 쓰게 될 연산자들을 강한 결합부터 약한 결합 순으로:
**— 거듭제곱*,/,//,%— 곱셈과 나눗셈+,-— 덧셈과 뺄셈<,<=,>,>=,==,!=— 비교notandor
헷갈리면 괄호를 치세요. 명확함이 똑똑함을 이깁니다.
제어 흐름으로 이동
이제 연산자를 익혔으니 조건을 쓸 수 있어요. 다음 페이지는 if/elif/else입니다 — 연산자가 알려주는 값에 따라 프로그램이 이 길을 갈지 저 길을 갈지 결정하게 해주는 구조예요.
자주 묻는 질문
파이썬의 주요 연산자 종류는 뭐가 있나요?
산술(+, -, *, /, //, %, **), 비교(==, !=, <, <=, >, >=), 논리(and, or, not), 할당(=, +=, -=, …), 멤버십(in, not in), 동일성(is, is not) 이 있어요.
파이썬에서 ==과 is는 뭐가 다른가요?
==는 두 값이 같은지를 검사해요. is는 두 변수가 메모리 상에서 정확히 같은 객체를 가리키는지를 검사합니다. None, True, False는 싱글턴이기 때문에 is를 쓰세요. 그 외의 경우에는 거의 언제나 ==가 맞아요.
파이썬에서 % 연산자는 뭘 하나요?
숫자에서는 나머지 연산자예요 — 나눗셈의 나머지를 돌려줍니다. 17 % 5는 2예요. 문자열에서는 "hello %s" % name처럼 예전 방식의 포매팅 문법이기도 한데, 이건 대부분 f-string으로 대체됐어요.