728x90
파이썬은 함수형 프로그래밍 스타일도 지원하며, 함수를 인자로 받거나 함수를 반환하는 고차 함수(Higher-order Function)를 쉽게 작성할 수 있습니다. functools.partial
을 이용하면 인자의 일부를 고정한 새로운 함수를 만들어 코드 재사용성을 높일 수 있습니다.
● 고차 함수란?
고차 함수는 다른 함수를 인자로 받거나, 함수를 반환하는 함수입니다. map()
, filter()
, sorted()
등도 대표적인 고차 함수입니다.
def apply_func(f, value):
return f(value)
print(apply_func(len, "Python")) # 6
이와 같이 함수를 인자로 전달할 수 있어 유연한 처리 방식이 가능합니다.
● 함수 반환하는 고차 함수
def make_multiplier(factor):
def multiply(n):
return n * factor
return multiply
times2 = make_multiplier(2)
print(times2(5)) # 10
이 방식은 클로저(closure)를 활용하여 동적으로 함수 동작을 정의할 수 있습니다.
● functools.partial 함수
partial
함수는 기존 함수의 인자 일부를 고정시켜 새로운 함수를 생성합니다.
from functools import partial
def power(base, exponent):
return base ** exponent
square = partial(power, exponent=2)
print(square(5)) # 25
이는 콜백 함수나 반복 작업에서 기본 인자를 고정할 때 유용하게 활용됩니다.
● sorted의 key로 활용
data = ["apple", "banana", "cherry"]
sorted_data = sorted(data, key=len)
print(sorted_data) # ['apple', 'banana', 'cherry']
key 인자에 함수를 전달함으로써 다양한 정렬 기준을 적용할 수 있습니다.
● 마무리
고차 함수와 partial 함수는 코드를 더 간결하고 재사용 가능하게 만들어줍니다. 특히 함수형 스타일의 프로그래밍에 익숙해지면, 많은 반복 작업과 로직 제어를 더 깔끔하게 구현할 수 있습니다.
728x90
'프로그래밍언어 > 파이썬[중급]' 카테고리의 다른 글
[파이썬][중급] Chapter32. itertools 고급 패턴 (0) | 2025.05.24 |
---|---|
[파이썬][중급] Chapter31. 데코레이터 중첩과 인자 전달 (0) | 2025.05.24 |
[파이썬][중급] Chapter29. 타입 힌트와 함수 주석 (0) | 2025.05.23 |
[파이썬][중급] Chapter28. 비동기 파일 및 네트워크 처리 (0) | 2025.05.23 |
[파이썬][중급] Chapter27. async/await와 asyncio 기초 (0) | 2025.05.23 |