Python Functional Programming

7. 함수형 프로그래밍(Functional Programming)

함수형 프로그래밍 개요 (Functional Programming Overview)

함수형 프로그래밍은 상태 변경과 가변 데이터보다는 함수의 조합을 통해 작업을 수행하는 프로그래밍 패러다임입니다. 이는 부수 효과(side effects)를 피하고 코드의 예측 가능성과 유지 보수성을 높이는 데 도움을 줍니다.

고차 함수 (Higher-order Functions)

고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수를 말합니다. 이는 함수의 추상화를 증가시키고 코드의 재사용성을 높이는 데 유용합니다.

def apply_operation(operation, x, y):
    return operation(x, y)

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

print(apply_operation(add, 5, 3))  # 8
print(apply_operation(subtract, 5, 3))  # 2

위 예제에서 apply_operation 함수는 addsubtract 함수를 인자로 받아서 각각의 연산을 수행합니다. 이는 고차 함수의 한 예입니다.

람다 함수 (Lambda Functions)

람다 함수는 이름 없이 정의되는 익명의 함수로, 간단한 연산을 수행할 때 유용합니다.

add = lambda x, y: x + y
print(add(3, 5))  # 8

위 예제에서 lambda x, y: x + y는 두 개의 인자를 받아 더하는 람다 함수입니다.

map, filter, reduce

map

map 함수는 주어진 함수를 iterable의 각 요소에 적용하여 결과를 반환합니다.

numbers = [1, 2, 3, 4, 5]

# 각 요소를 제곱하여 새로운 리스트 생성
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # [1, 4, 9, 16, 25]

filter

filter 함수는 주어진 함수의 조건을 만족하는 요소만 필터링하여 반환합니다.

# 짝수인 요소만 필터링
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # [2, 4]

reduce

reduce 함수는 iterable의 요소들을 왼쪽에서 오른쪽으로 하나씩 축약하여 연산을 수행합니다. Python 3부터는 내장 함수가 아니라 functools 모듈에서 import 해야 사용할 수 있습니다.

from functools import reduce

# 모든 요소를 곱하여 결과 반환
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 120

위 예제에서 map, filter, reduce 함수들은 함수형 프로그래밍에서 자주 사용되며, 각각의 기능을 통해 iterable 데이터를 변형하고 필터링하며 축소할 수 있습니다.

함수형 프로그래밍의 개념을 이해하고 이를 Python에서 어떻게 활용할 수 있는지를 알면, 보다 간결하고 함수적인 접근 방식으로 프로그램을 작성할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *