PHpullh
학습 라이브러리/Python/부분 함수 (functools.partial)

PYTHON · 함수

부분 함수 (functools.partial)

functools.partial로 함수의 일부 인자를 고정하여 새로운 함수를 만듭니다.

함수중급partialfunctools부분 함수커링

핵심 설명

functools.partial로 함수의 일부 인자를 고정하여 새로운 함수를 만듭니다.

Python code

from functools import partial

# 기본 사용
def power(base, exponent):
    return base ** exponent

square = partial(power, exponent=2)
cube = partial(power, exponent=3)
print(square(5))  # 25
print(cube(3))    # 27

# 로깅 함수 커스터마이징
import logging

debug = partial(print, "[DEBUG]")
error = partial(print, "[ERROR]", end="\n\n")
debug("서버 시작")     # [DEBUG] 서버 시작
error("연결 실패")     # [ERROR] 연결 실패

# 콜백에서 활용
def fetch_data(url, timeout=30, retry=3):
    return f"GET {url} (timeout={timeout}, retry={retry})"

fast_fetch = partial(fetch_data, timeout=5, retry=1)
print(fast_fetch("https://api.example.com"))

# partial 정보 확인
print(fast_fetch.func)      # <function fetch_data>
print(fast_fetch.keywords)  # {'timeout': 5, 'retry': 1}

학습 팁

partial은 콜백 함수에서 추가 인자를 전달할 때 lambda보다 명확하고 pickle 가능합니다.

주의할 점

partial로 고정한 인자를 호출 시 다시 전달하면 TypeError가 발생합니다 (위치 인자의 경우).

자주 묻는 질문

부분 함수 (functools.partial)란 무엇인가요?

functools.partial 로 함수의 일부 인자를 고정하여 새로운 함수를 만듭니다.

부분 함수 (functools.partial) 학습 시 주의할 점은 무엇인가요?

partial 로 고정한 인자를 호출 시 다시 전달하면 TypeError 가 발생합니다 (위치 인자의 경우).