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 를 사용하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.