PHpullh
학습 라이브러리/Python/함수형 도구 (toolz)

PYTHON · 함수형

함수형 도구 (toolz)

toolz 라이브러리의 핵심 함수를 순수 Python으로 구현하여 함수형 프로그래밍 도구를 이해합니다.

함수형고급toolzpipecurry함수형

핵심 설명

toolz 라이브러리의 핵심 함수를 순수 Python으로 구현하여 함수형 프로그래밍 도구를 이해합니다.

Python code

from functools import reduce
from itertools import islice

# pipe: 데이터를 함수들에 순서대로 통과
def pipe(data, *funcs):
    return reduce(lambda v, f: f(v), funcs, data)

# curry: 자동 부분 적용
def curry(func):
    import inspect
    n = len(inspect.signature(func).parameters)
    def curried(*args):
        if len(args) >= n:
            return func(*args[:n])
        return lambda *more: curried(*args, *more)
    return curried

# partition: 조건으로 분할
def partition(pred, iterable):
    t, f = [], []
    for item in iterable:
        (t if pred(item) else f).append(item)
    return t, f

# 사용 예시
result = pipe(
    range(20),
    list,
    lambda xs: [x**2 for x in xs],
    lambda xs: [x for x in xs if x > 50],
    sum
)
print(f"50 초과 제곱의 합: {result}")

@curry
def add(a, b, c):
    return a + b + c

add5 = add(5)
add5_3 = add5(3)
print(add5_3(2))  # 10

evens, odds = partition(lambda x: x % 2 == 0, range(10))
print(f"짝수: {evens}, 홀수: {odds}")

학습 팁

실제 프로젝트에서는 pip install toolz를 사용하면 최적화된 함수형 도구를 바로 활용할 수 있습니다.

주의할 점

커링된 함수에 인자를 한꺼번에 전달하면 예상과 다른 결과가 나올 수 있습니다. 인자 수를 정확히 파악하세요.

자주 묻는 질문

함수형 도구 (toolz)란 무엇인가요?

toolz 라이브러리의 핵심 함수를 순수 Python으로 구현하여 함수형 프로그래밍 도구를 이해합니다.

함수형 도구 (toolz) 학습 시 주의할 점은 무엇인가요?

커링된 함수에 인자를 한꺼번에 전달하면 예상과 다른 결과가 나올 수 있습니다. 인자 수를 정확히 파악하세요.

Continue Learning

Python 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.