preloader
Python

Python Functools

Python Functools

Python의 functools 모듈은 함수형 프로그래밍에 대한 일부 기능을 제공합니다. 이 모듈에는 여러 가지 유용한 함수들이 포함되어 있으며, 주로 고차 함수와 함수형 프로그래밍에 사용됩니다!

몇몇 함수들을 예시로 들어보겠습니다!

partial 함수

functools 모듈의 partial 함수는 기존 함수의 인자를 고정하는 역할을 합니다. 즉, 인자를 일부분만 넘겨주고 나머지 인자는 나중에 전달할 수 있게끔 만들어줍니다. 예를 들어, 다음과 같은 함수가 있다고 가정해보겠습니다.

def add(a, b):
    return a + b

이 함수를 partial 함수로 변환하면 다음과 같이 사용할 수 있습니다.

from functools import partial

add_five = partial(add, 5)
result = add_five(3) # 8

reduce 함수

reduce 함수는 시퀀스(리스트, 튜플 등)에 대해 주어진 함수를 적용하고, 결과를 누적하는 함수입니다. 이 함수는 functools 모듈에서 가져올 수 있습니다. 예를 들어, 다음과 같이 리스트의 모든 항목을 곱하는 함수를 작성할 수 있습니다.

from functools import reduce

def multiply(x, y):
    return x * y

result = reduce(multiply, [1, 2, 3, 4]) # 24

lru_cache 함수

lru_cache 함수는 Least Recently Used 캐시를 구현하는 데 사용됩니다. 이 함수는 결과를 캐시에 저장하여 이전에 계산한 인자의 결과를 저장하고, 동일한 인자가 다시 전달될 때 이전에 계산한 결과를 반환합니다. 예를 들어, 다음과 같은 함수가 있다고 가정해보겠습니다.

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

이 함수는 피보나치 수열의 n번째 항을 반환합니다. 이 함수를 호출하면 이전에 계산한 결과가 캐시에 저장되어, 동일한 인자로 함수를 다시 호출하면 이전에 계산한 결과를 반환합니다.

여러 가지 유용한 함수들중 극히 일부를 이용한 예시입니다!

support-btn
도움이 되셨다면 몰랑이에게 밀크티를...!
더 다양한 포스팅을 채우도록 노력할게요!
comments powered by Disqus