operator — 함수로서의 표준 연산자
operator — 함수로서의 표준 연산자
operator 모듈은 파이썬의 내장 연산자에 대응하는 함수들을 제공해요. 산술 비교, 시퀀스 연산, 논리 연산 등 대부분의 연산자를 함수 형태로 호출할 수 있어요. 주로 map(), sorted(), itertools 와 함께 키 함수나 고차 함수의 인자로 쓰기 좋아요.
본문
객체 동일성 검사
- operator.is_none(a) —
a is None을 반환해요. 객체 동일성을 검사해요. (버전 3.14에서 추가) - operator.is_not_none(a) —
a is not None을 반환해요. 객체 동일성을 검사해요. (버전 3.14에서 추가)
수학 및 비트 연산
가장 많은 연산은 수학 및 비트 연산이에요.
- operator.abs(obj), operator.abs(obj) —
_obj_의 절댓값을 반환해요. - operator.add(a, b), operator.add(a, b) —
_a_와_b_가 숫자일 때a + b를 반환해요. - operator.and_(a, b), operator.and(a, b) —
a & b를 반환해요.
시퀀스 연산
- operator.contains(a, b), operator.contains(a, b) —
b in a검사의 결과를 반환해요. 피연산자 순서가 뒤집혀 있음에 주의하세요. - operator.countOf(a, b) —
_a_안에서_b_가 나타나는 횟수를 반환해요.
연산자-함수 매핑 (Mapping Operators to Functions)
연산을 함수로 매핑하는 표는 다음과 같아요.
| 연산(Operation) | 문법(Syntax) | 함수(Function) |
| 덧셈 | a + b | add(a, b) |
| 연결 | seq1 + seq2 | concat(seq1, seq2) |
| 포함 검사 | obj in seq | contains(seq, obj) |
| 나눗셈 | a / b | truediv(a, b) |
| 나눗셈 | a // b | floordiv(a, b) |
| 교집합 (비트 And) | a & b | and_(a, b) |
| 배타적 OR / 대칭 차 | a ^ b | xor(a, b) |
| 비트 반전 / 보수 | ~ a | invert(a) |
| 비트 OR / 합집합 | a \| b | or_(a, b) |
| 거듭제곱 | a ** b | pow(a, b) |
| 인덱스 할당 | obj[k] = v | setitem(obj, k, v) |
| 왼쪽 시프트 | a << b | lshift(a, b) |
| 모듈로 | a % b | mod(a, b) |
| 곱셈 | a * b | mul(a, b) |
| 행렬 곱셈 | a @ b | matmul(a, b) |
| 산술 부정 | - a | neg(a) |
| 논리 부정 | not a | not_(a) |
| 양수 | + a | pos(a) |
| 오른쪽 시프트 | a >> b | rshift(a, b) |
| 슬라이스 삭제 | del seq[i:j] | delitem(seq, slice(i, j)) |
| 뺄셈 | a - b | sub(a, b) |
| 참 검사 | obj | truth(obj) |
| 순서 | a < b | lt(a, b) |
| 순서 | a <= b | le(a, b) |
이처럼 operator 모듈은 연산자를 첫 번째 인자로 함수를 받는 고차 함수(reduce, sorted, groupby 등)에 바로 넘길 수 있어 lambda 를 줄이는 데 유용해요.