Python에서의 고차 함수 (feat. map, filter, reduce)
Summary
프로그래밍 언어에서 고차 함수(Higher-order function)는 함수를 인자로 받거나, 함수를 반환하는 함수를 의미합니다. 이러한 함수들은 함수형 프로그래밍의 핵심 요소로, 코드의 재사용성과 가독성을 높이는 데 큰 역할을 합니다. 특히 파이썬에서는 고차 함수를 활용하기 좋습니다.
고차 함수의 개념
고차 함수는 다음 두 가지 특성 중 하나 이상을 만족하는 함수입니다.
- 하나 이상의 함수를 인자로 받을 수 있다.
- 함수를 반환할 수 있다.
이러한 특성 덕분에 고차 함수는 매우 유연하고 강력한 도구로 사용됩니다. 대표적인 고차 함수로는 map()
, filter()
, reduce()
등이 있습니다.
고차 함수의 장점
고차 함수는 다음의 여러 가지 장점을 가지고 있습니다.
- 코드의 재사용성 : 고차 함수를 사용하면 동일한 코드 블럭을 여러 번 사용할 수 있어 코드의 재사용성이 높아집니다.
- 가독성 향상 : 고차 함수를 사용하면 코드를 간결하게 작성할 수 있어 가독성이 향상됩니다. 특히, 익명 함수(lambda 함수)를 사용하면 더 짧고 명료한 코드를 작성할 수 있습니다.
- 유연성 : 함수를 인자로 받거나 반환할 수 있어 매우 유연한 코드를 설계할 수 있습니다.
함수를 인자로 받는 함수의 예시
다음 예시는 함수를 인자로 받는 고차 함수를 생성합니다. apply_function
함수는 함수를 인자로 받아 해당 함수를 실행하게 됩니다.
1
2
3
4
5
6
7
8
def apply_function(func, value) :
return func(value)
def square(x) :
return x * x
result = apply_function(square, 5)
print(result) # 25
함수를 반환하는 함수의 예시
다음 예시는 함수를 반환하는 고차 함수를 생성합니다. create_multiplier
함수는 입력값에 특정 값을 곱하는 기능을 하는 함수를 반환합니다.
1
2
3
4
5
6
7
def create_multiplier(n) :
def multiplier(x) :
return x * n
return multiplier
multiply_by_3 = create_multiplier(3)
print(multiply_by_3(10)) # 30
Python에서의 고차 함수
파이썬은 고차 함수를 매우 효율적으로 지원합니다. 파이썬에서 자주 사용되는 몇 가지 고차 함수들에 대해서 설명하도록 하겠습니다.
map()
map()
함수는 주어진 함수와 iterable을 인자로 받아, iterable의 각 요소에 함수를 적용한 결과를 반환합니다.
1
2
3
4
5
6
def square(x) :
return x * x
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(square, numbers))
print(squared_numbers) # [1, 4, 9, 16, 25]
filter()
filter()
함수는 주어진 함수와 iterable을 인자로 받아, 함수의 조건을 만족하는 요소만을 포함하는 iterable을 반환합니다.
1
2
3
4
5
6
def is_even(n) :
return n % 2 == 0
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(is_even, numbers))
print(even_numbers) # [2, 4]
reduce()
reduce()
함수는 iterable의 각 요소에 누적 함수를 적용하여 단일 값을 반환합니다. 이 함수는 functools
모듈에서 제공됩니다.
1
2
3
4
5
6
7
8
from functools import reduce
def add(x, y) :
return x + y
numbers = [1, 2, 3, 4, 5]
sum_of_numbers = reduce(add, numbers)
print(sum_of_numbers) # 15
고차 함수는 파이썬을 비롯한 여러 프로그래밍 언어에서 강력한 도구로 활용됩니다. 함수를 인자로 받거나 반환하는 이러한 함수들은 코드의 재사용성과 가독성을 높이며, 유연하고 간결한 코드를 작성하는 데 큰 도움이 됩니다. 이러한 고차 함수를 잘 활용하면 더욱 효율적인 코드를 작성할 수 있을 것입니다.