개요
2022.07.04 - [functools] reduce 함수에 이어 functools 모듈의 partial 함수에 대해 알아본다.
partial
partial 함수는 함수 이름과 그 인자 값을 전달받아 하나 이상의 인자가 채워진 함수를 생성하기 위해 사용한다.
functools.partial(func, *args, **kwargs)
예시
아래와 같이 두 수의 곰셉을 계산하는 multiply 함수가 있다고 하자.
def multiply(x, y):
return x * y
만약 이 함수의 x가 5이고, 7이고 9인 함수를 정의해야 한다면 partial 함수를 이용해 아래와 같이 선언하여 사용할 수 있다.
import functools
def multiply(x, y):
return x * y
five_mul = functools.partial(multiply, 5)
print(five_mul(2))
partial 함수는 *args와 **kwargs로 호출되는 함수처럼 동작하는 partial 객체를 반환한다. 생성된 partial 객체는 호출 가능한(callable) 객체이며, 세 개의 속성을 가진다.
- partial.func : 호출 가능한 객체 또는 함수. partial 객체를 호출하면 새 매개변수를 사용해 func으로 전달된다.
- partial.args : partial 객체 호출 시 전달되는 매개변수. 왼쪽부터 순서대로 채워진다.
- partial.keywords : partail 객체 호출 시 전달되는 **kwargs.
💡 Airflow Python Operator 사용 시, op_args 또는 op_kwargs 속성을 이용해 함수의 매개변수를 전달해야 한다.
하지만 partial 함수를 사용하면 op_args 또는 op_kwargs 속성을 사용하지 않고도 실행할 함수에 매개변수를 전달할 수 있다.
참고 문서
https://kukuta.tistory.com/329