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 가 발생합니다 (위치 인자의 경우).
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.