Search

functools.partial

하나 이상의 인수가 이미 채워진 함수의 새로운 버전을 만들 때 사용하는 함수

예시

# 입력 인수의 합 혹은 곱을 리턴하는 함수 def add_mul(calculate, *args): if calculate == '+': result = 0 for i in args: result += i if calculate == '*': result = 1 for i in args: result *= i return result
Python
복사
add_mul(’+’, 1, 2, 3, 4, 5) → return 15
add_mul(’*’, 1, 2, 3, 4, 5) → return 120
이러한 함수를 partial을 통해
add(1, 2, 3, 4, 5) → return 15
mul(1, 2, 3, 4, 5) → return 120
이렇게 변형시킬 수 있다

일반적인 함수로 변형시키는 경우

def add(*args): return add_mul('+', *args) def mul(*args): return add_mul('*', *args)
Python
복사

partial 로 변형시키는 경우

from fuctools import partial add = partial(add_mul, '+') mul = partial(add_mul, '*')
Python
복사
이렇게 보면 맨위의 설명이 이해가 간다
하나의 인자가 이미 채워진 새로운 버전의 add_mul의 변형을 만들어낸 것!
이 이후로
만약 100부터 더하는 함수를 만들고싶다면
add = partial(add_mul, ‘+’, 100)
이렇게 한다면 add(1,2,3)은 100+1+2+3을 리턴하게 될 것이다