[python] 함수형 프로그래밍에서의 부분 적용과 커링의 차이점은 무엇인가요?

부분 적용과 커링은 모두 함수형 프로그래밍에서 사용되는 기법으로, 함수를 더 유연하게 조작하는 방법입니다. 하지만 둘 사이에는 몇 가지 차이점이 있습니다.

부분 적용(Partial Application): 부분 적용은 함수에 인자를 일부만 전달하여 새로운 함수를 생성하는 것을 의미합니다. 기존 함수에서 인자 중 일부만 고정하여 새로운 함수를 만들어낼 수 있습니다. 이렇게 만들어진 새로운 함수는 나중에 나머지 인자를 전달받을 때 실행됩니다.

예를 들어, 다음과 같은 add 함수가 있다고 가정해봅시다.

def add(x, y):
    return x + y

이 함수를 부분 적용하여 새로운 함수를 만들 수 있습니다.

add_5 = partial(add, 5)  # add_5 함수는 두 번째 인자에 항상 5를 전달하는 새로운 함수입니다.

이제 add_5 함수를 호출할 때, 첫 번째 인자만을 전달하면 됩니다.

print(add_5(10))  # 10 + 5 = 15

커링(Currying): 커링은 함수를 인자를 여러 개 받는 대신, 인자 하나를 받고 나머지 인자를 받는 새로운 함수를 반환하는 과정을 말합니다. 이렇게 만들어진 새로운 함수는 나머지 인자를 전달받아 실행될 때까지 호출될 수 있습니다.

예를 들어, 다음과 같은 add 함수가 있다고 가정해봅시다.

def add(x):
    def inner(y):
        return x + y
    return inner

add 함수를 호출할 때, 첫 번째 인자만 전달하면 새로운 함수가 반환되고, 이 함수를 다시 호출하여 나머지 인자를 전달할 수 있습니다.

add_5 = add(5)  # add_5 함수는 첫 번째 인자 5를 받아 나머지 인자를 기다리는 새로운 함수입니다.
print(add_5(10))  # 5 + 10 = 15

부분 적용과 커링은 함수를 조작하는 효과적인 기법으로, 코드의 재사용성과 가독성을 높일 수 있습니다. 타협점으로 말하자면, 부분 적용은 실제로 함수를 호출하는 시점을 결정할 수 있고, 커링은 중간 함수를 생성하여 재활용할 수 있다는 차이점이 있습니다.

자세한 내용은 다음 문서를 참고해주세요.