Python은 산술(arithmetic), 논리(logical), 관계(relational), 비트(bitwise) 등 다양한 수학적 연산을 수행할 수 있는 표준 라이브러리 메서드를 추가로 제공합니다. 이러한 메서드들은 operator 모듈 안에 포함되어 있습니다.
operator 모듈을 사용하려면 먼저 표준 라이브러리 모듈을 임포트해야 합니다.
import operator
이 글에서는 operator 모듈이 제공하는 여러 연산자 함수 중 비트 연산과 컨테이너 연산에 앞서, 가장 기본이 되는 산술 연산 함수와 관계(비교) 연산 함수를 살펴보겠습니다.
산술 연산(Arithmetic Operations)
가장 먼저 산술 연산을 수행하는 함수들을 알아보겠습니다. 각 함수는 일반적인 연산자 기호와 동일한 결과를 함수 형태로 반환합니다.
| 번호 | 함수 및 설명 |
|---|---|
| 1 | add(x, y) 두 수 x와 y를 더합니다. 단순한 덧셈을 수행하며 |
| 2 | sub(x, y) x에서 y를 뺍니다. |
| 3 | mul(x, y) 두 수 x와 y를 곱합니다. |
| 4 | truediv(x, y) x를 y로 나눈 결과를 반환합니다. 나눗셈의 결과로 소수(실수) 값이 나올 수 있으며, |
| 5 | floordiv(x, y) x를 y로 나눈 몫(정수 부분)을 구합니다. |
| 6 | mod(x, y) x를 y로 나눈 나머지를 구합니다. |
| 7 | pow(x, y) x의 y제곱(x^y)을 계산합니다. |
예제 코드
# 산술 연산자
import operator
print('Add: ' + str(operator.add(56, 45)))
print('Subtract: ' + str(operator.sub(56, 45)))
print('Multiplication: ' + str(operator.mul(56, 45)))
print('True division: ' + str(operator.truediv(56, 45))) # a / b와 동일
print('Floor division: ' + str(operator.floordiv(56, 45))) # a // b와 동일
print('Mod: ' + str(operator.mod(56, 45))) # a % b와 동일
print('pow: ' + str(operator.pow(5, 3)))
실행 결과
Add: 101 Subtract: 11 Multiplication: 2520 True division: 1.2444444444444445 Floor division: 1 Mod: 11 pow: 125
관계 연산(Relational Operations)
operator 모듈에는 <, <=, >, >=, ==, != 같은 관계(비교) 연산자에 대응하는 함수들도 포함되어 있습니다. 이 함수들은 조건식 대신 함수 호출 형태로 참(True) 또는 거짓(False)을 반환하기 때문에, sorted()나 filter()처럼 함수를 인자로 받는 코드에서 특히 유용하게 활용됩니다.
주요 관계 연산 함수는 아래와 같습니다.
| 번호 | 함수 및 설명 |
|---|---|
| 1 | lt(x, y) x가 y보다 작은지 검사합니다. |
| 2 | le(x, y) x가 y보다 작거나 같은지 검사합니다. |
| 3 | eq(x, y) x와 y가 서로 같은지 검사합니다. |
| 4 | gt(x, y) x가 y보다 큰지 검사합니다. |
| 5 | ge(x, y) x가 y보다 크거나 같은지 검사합니다. |
| 6 | ne(x, y) x와 y가 서로 다른지 검사합니다. |
예제 코드
# 관계(비교) 연산자
import operator
print('Less Than: ' + str(operator.lt(5, 10)))
print('Less Than Equal: ' + str(operator.le(10, 10)))
print('Greater Than: ' + str(operator.gt(5, 5)))
print('Greater Than Equal: ' + str(operator.ge(5, 5)))
print('Equal to: ' + str(operator.eq(12, 12)))
print('Not Equal to: ' + str(operator.ne(15, 12)))
실행 결과
Less Than: True Less Than Equal: True Greater Than: False Greater Than Equal: True Equal to: True Not Equal to: True
마무리
operator 모듈의 연산자 함수는 일반 연산자 기호와 결과가 완전히 동일하지만, 함수 객체 자체를 변수에 담거나 다른 함수의 인자로 전달할 수 있다는 점에서 강력합니다. 예를 들어 functools.reduce(operator.mul, numbers)처럼 리스트 전체의 곱을 손쉽게 계산할 수 있습니다. 람다(lambda) 함수를 직접 작성하는 것보다 가독성과 성능 면에서 유리한 경우가 많으니, 실무 코드에서 적극적으로 활용해 보시기 바랍니다.