이번 포스트에서는 파이썬의 중요한 개념 중 하나인 함수형 프로그래밍(Functional Programming)을 다루고자 합니다. 함수형 프로그래밍은 파이썬에서도 널리 활용되며, 파이썬의 다양한 기능을 활용하여 함수형 프로그래밍을 지원하고 있습니다.
함수형 프로그래밍은 프로그램을 수학적 함수의 조합으로 보는 개념이며, 데이터를 변경 가능한 상태로 다루지 않고 순수한 함수의 조합으로 문제를 해결합니다. 파이썬은 람다 함수, 맵, 필터, 제너레이터와 같은 함수형 프로그래밍에 필요한 개념과 기법들을 지원하여 함수형 프로그래밍을 쉽게 구현할 수 있도록 도와줍니다.
본 포스트에서는 파이썬의 함수형 프로그래밍과 관련된 주요 개념들을 자세히 알아보겠습니다. 람다 함수, 맵, 필터, 제너레이터와 같은 개념들을 예제 코드와 함께 설명하여 실제로 어떻게 활용되는지 살펴보도록 하겠습니다.
8.1. 람다 함수
람다 함수(lambda function)는 익명의 함수로서 한 줄로 간단하게 정의되는 함수입니다. 일반적인 함수와 달리 함수의 이름이 없고, 간결한 문법을 가지고 있어 함수형 프로그래밍에서 자주 사용됩니다. 람다 함수는 함수를 간편하게 정의하고 사용할 수 있도록 도와줍니다.
# 두 수를 더하는 람다 함수
add = lambda x, y: x + y
result = add(3, 5)
print("결과:", result) # 결과: 8
8.2. 맵 (map)과 필터 (filter)
맵(map)과 필터(filter)는 함수형 프로그래밍에서 자주 사용되는 고차 함수(higher-order function)입니다. 맵 함수는 주어진 함수를 시퀀스(리스트, 튜플 등)의 모든 요소에 적용하여 새로운 시퀀스를 생성합니다. 필터 함수는 주어진 함수를 시퀀스의 각 요소에 적용하여 조건을 만족하는 요소로 이루어진 새로운 시퀀스를 반환합니다.
# 맵 함수 예제
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print("제곱 결과:", squared) # 제곱 결과: [1, 4, 9, 16, 25]
# 필터 함수 예제
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("짝수:", even_numbers) # 짝수: [2, 4]
8.3. 제너레이터 (generator)
제너레이터(generator)는 이터레이터(iterator)를 생성하는 함수입니다. 이터레이터는 값을 한 번에 하나씩 반환하는 객체로, 제너레이터는 값을 필요로 할 때마다 생성하여 메모리를 효율적으로 관리할 수 있습니다. 제너레이터는 함수 내부에서 yield 키워드를 사용하여 값을 반환하며, 함수 호출 시 제너레이터 객체를 반환합니다.
# 제너레이터 함수 예제
def countdown(n):
while n > 0:
yield n
n -= 1
# 제너레이터 객체 생성
cd = countdown(5)
# 제너레이터 값을 순차적으로 출력
for num in cd:
print(num) # 5, 4, 3, 2, 1
위와 같이 함수형 프로그래밍에서는 람다 함수, 맵, 필터, 제너레이터와 같은 개 념과 기법들이 자주 활용됩니다. 이를 통해 코드의 가독성과 유지보수성을 높이고, 효율적인 프로그래밍을 할 수 있습니다.
'파이썬' 카테고리의 다른 글
python | 9. 파이썬 프로젝트 예시 (0) | 2023.06.16 |
---|---|
python | 7. 객체 지향 프로그래밍 (0) | 2023.06.16 |
python | 6. 모듈과 패키지 (0) | 2023.06.14 |
python | 5. 파일 입출력 (0) | 2023.06.14 |
python | 4. 데이터 구조 (0) | 2023.06.13 |
댓글