부분 함수(partial functions)는 함수의 일부 인수들을 고정하여 새로운 함수를 생성하는 것을 의미한다. 이는 파이썬의 functools 모듈에서 제공하는 partial 함수를 사용하여 구현할 수 있다. 부분 함수는 함수형 프로그래밍의 한 기법으로, 코드의 재사용성과 가독성을 높이는 데 유용하다.
기본 개념
functools.partial 함수를 사용하여 부분 함수를 생성할 수 있다. 이는 원래 함수의 일부 인수를 고정한 새로운 함수를 반환한다.
from functools import partial
new_function = partial(원래_함수, 고정할_인수1, 고정할_인수2, ...)
예제
예제 1: 기본 사용법
다음은 partial 함수를 사용하여 새로운 함수를 생성하는 간단한 예제이다.
from functools import partial
def multiply(x, y):
return x * y
# y 값을 2로 고정한 새로운 함수
double = partial(multiply, y=2)
print(double(5)) # 10
print(double(10)) # 20
이 예제에서 multiply 함수는 두 개의 인수를 받아 곱셈을 수행한다. partial 함수를 사용하여 y 값을 2로 고정한 double 함수를 생성하였다. 이제 double 함수는 하나의 인수만 받아, 그 값에 2를 곱한 결과를 반환한다.
예제 2: 키워드 인수 고정
키워드 인수를 고정하여 새로운 함수를 생성할 수 있다.
from functools import partial
def greet(greeting, name):
return f"{greeting}, {name}!"
# greeting 값을 "Hello"로 고정한 새로운 함수
say_hello = partial(greet, greeting="Hello")
print(say_hello("Alice")) # Hello, Alice!
print(say_hello("Bob")) # Hello, Bob!
# greeting 값을 "Hi"로 고정한 새로운 함수
say_hi = partial(greet, greeting="Hi")
print(say_hi("Alice")) # Hi, Alice!
print(say_hi("Bob")) # Hi, Bob!
예제 3: 파일 읽기에서 부분 함수 사용
부분 함수를 사용하여 파일을 읽는 작업을 단순화할 수 있다.
from functools import partial
# open 함수를 사용하여 read 모드로 파일을 여는 부분 함수 생성
open_read = partial(open, mode='r')
with open_read('example.txt') as file:
content = file.read()
print(content)
이 예제에서 open_read 함수는 항상 읽기 모드로 파일을 여는 부분 함수이다. 이를 통해 파일을 읽는 코드를 간결하게 만들 수 있다.