PHpullh

PYTHON · 함수형

operator 모듈

operator 모듈로 연산자를 함수로 사용하여 lambda 사용을 줄입니다.

함수형중급operatoritemgetterattrgetter함수형

핵심 설명

operator 모듈로 연산자를 함수로 사용하여 lambda 사용을 줄입니다.

Python code

from operator import (
    add, mul, itemgetter, attrgetter, methodcaller
)
from functools import reduce

# 산술 연산자를 함수로
print(add(3, 4))   # 7
print(mul(3, 4))   # 12
print(reduce(mul, range(1, 6)))  # 120 (5!)

# itemgetter: 인덱스/키로 값 추출
data = [("Alice", 85), ("Bob", 92), ("Carol", 78)]
by_score = sorted(data, key=itemgetter(1), reverse=True)
print(by_score)

# 여러 키 동시 추출
get_name_score = itemgetter(0, 1)
print(get_name_score(("Alice", 85, "A")))  # ('Alice', 85)

# attrgetter: 객체 속성 추출
class Student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

students = [Student("Alice", 3), Student("Bob", 1), Student("Carol", 2)]
by_grade = sorted(students, key=attrgetter("grade"))
for s in by_grade:
    print(f"  {s.name}: {s.grade}학년")

# methodcaller: 메서드 호출
words = ["hello", "WORLD", "Python"]
upper = list(map(methodcaller("upper"), words))
print(upper)  # ['HELLO', 'WORLD', 'PYTHON']

학습 팁

operator 함수는 lambda보다 빠르고 pickle 가능합니다.

주의할 점

itemgetter는 키가 존재하지 않으면 KeyError/IndexError를 발생시킵니다. 안전한 접근이 필요하면 lambda를 사용하세요.

자주 묻는 질문

operator 모듈란 무엇인가요?

operator 모듈로 연산자를 함수로 사용하여 lambda 사용을 줄입니다.

operator 모듈 학습 시 주의할 점은 무엇인가요?

itemgetter 는 키가 존재하지 않으면 KeyError / IndexError 를 발생시킵니다. 안전한 접근이 필요하면 lambda 를 사용하세요.