[python] 합성 함수와 파이프라인을 사용한 함수 조합에 대해 알려주세요.

함수 조합은 여러 함수를 결합하여 새로운 함수를 만드는 방법입니다. 이는 함수형 프로그래밍에서 자주 사용되며, 코드의 재사용성과 가독성을 높이는 데 도움이 됩니다.

합성 함수는 두 개의 함수를 조합하여 새로운 함수를 만들어냅니다. 예를 들어, 함수 f와 g가 있다고 가정해봅시다. f와 g를 조합하여 h(x) = f(g(x))인 새로운 함수 h를 만들 수 있습니다.

파이썬에서 합성 함수를 만들기 위해 다음과 같은 코드를 작성할 수 있습니다.

def compose(f, g):
    return lambda x: f(g(x))

# 예시 함수 f와 g
def f(x):
    return x + 1

def g(x):
    return x * 2

# 합성 함수 h(x) = f(g(x))
h = compose(f, g)

# 결과 출력
print(h(3))  # 7

위 예제에서는 compose라는 함수를 정의한 뒤, lambda 함수를 이용하여 두 개의 함수 f와 g를 조합한 합성 함수 h를 만들었습니다. h(3)의 결과는 7이 나오게 됩니다.

파이프라인은 여러 함수를 순차적으로 실행하고 그 결과를 전달하는 방식입니다. 예를 들어, 함수 f, g, h가 있을 때 f → g → h 순서로 실행하면서 결과를 전달하는 것을 말합니다.

파이썬에서 파이프라인을 사용하기 위해 다음과 같은 코드를 작성할 수 있습니다.

from functools import reduce

# 예시 함수 f, g, h
def f(x):
    return x + 1

def g(x):
    return x * 2

def h(x):
    return x - 3

# 파이프라인을 위한 함수 리스트
functions = [f, g, h]

# 파이프라인 실행
result = reduce(lambda x, f: f(x), functions, 0)

# 결과 출력
print(result)  # -1

위 예제에서는 functools의 reduce 함수를 사용하여 파이프라인을 실행했습니다. reduce 함수는 주어진 함수 리스트 functions와 초기 값 0을 이용하여 파이프라인을 실행하고 결과를 반환합니다. 결과는 -1이 나오게 됩니다.

합성 함수와 파이프라인은 함수형 프로그래밍의 중요한 개념이며, 파이썬에서도 유용하게 활용할 수 있습니다. 코드의 재사용성과 가독성을 개선하는 데 도움이 되므로, 효율적인 함수 조합을 고려해 보시기 바랍니다.

참고 자료: