본문 바로가기
프로그래밍 언어(Programming Languages)/파이썬(Python)

[Python] 파이썬 함수의 세계: 각종 함수 유형 마스터하기 - 2탄

by 데이터 벌집 2023. 10. 17.

[Python] 파이썬 함수의 세계: 각종 함수 유형 마스터하기 - 2탄

 

이전 시리즈인 "1탄"에서는 파이썬의 기본적인 함수 유형인 내장 함수, 사용자 정의 함수, 익명 함수에 대해 탐구해보았습니다. 

 

2023.10.16 - [파이썬(Python)] - [Python] 파이썬 함수의 세계: 각종 함수 유형 마스터하기 - 1탄

 

이번 2탄에서는 좀 더 고급 함수 유형을 살펴보며 파이썬에서의 함수 활용 방법을 깊게 이해해보겠습니다.

파이썬 함수 마스터하기 2탄

 

1. 고차 함수 (Higher-order Functions)

고차 함수란, 함수를 인자로 받거나, 함수를 반환하는 함수를 의미합니다. 대표적인 예로는 map, filter, reduce가 있습니다.

 

예제 1 : 리스트의 각 원소에 2를 곱하는 고차 함수 활용

 

numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(lambda x: x*2, numbers))
print(doubled_numbers)  
# 출력: [2, 4, 6, 8, 10]

예제 2: 리스트의 모든 원소를 더하는 고차 함수 활용

from functools import reduce
numbers = [1, 2, 3, 4, 5]
sum_of_numbers = reduce(lambda x, y: x + y, numbers)
print(sum_of_numbers)
# 출력: 15

 

 

2. 재귀 함수 (Recursive Functions)

재귀 함수는 함수 내부에서 자기 자신을 다시 호출하는 함수입니다. 대표적으로 피보나치 수열이나 팩토리얼 계산에 활용됩니다.

 

예제 1: 팩토리얼 계산하는 재귀 함수

 

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

print(factorial(5))  
# 출력: 120

 

예제 2: 리스트의 합을 구하는 재귀 함수

 

def recursive_sum(lst):
    if not lst:
        return 0
    else:
        return lst[0] + recursive_sum(lst[1:])

print(recursive_sum([1, 2, 3, 4, 5]))
# 출력: 15

 

 

3. 제너레이터 함수 (Generator Functions)

제너레이터 함수는 일반 함수와는 다르게, 실행될 때 값을 반환(return)하는 대신에 yield 키워드를 사용하여 값을 내보냅니다. 이를 통해 메모리를 효율적으로 관리할 수 있습니다.

 

예제 1: 0부터 4까지의 숫자를 생성하는 제너레이터 함수

def simple_generator():
    for i in range(5):
        yield i

gen = simple_generator()
for number in gen:
    print(number)  
# 출력: 
# 0
# 1
# 2
# 3
# 4

 

예제 2: 제너레이터를 사용해 피보나치 수열 생성

 

def fibonacci_generator(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

gen = fibonacci_generator(5)
for number in gen:
    print(number)
# 출력: 
# 0
# 1
# 1
# 2
# 3

 

 

함수 유형 목적 이점
고차 함수 (Higher-order Functions) 다른 함수를 인수로 받거나 함수를 반환하는 함수 코드 재사용성, 가독성, 모듈성
재귀 함수 (Recursive Functions) 자신을 호출하여 문제의 해결을 위한 반복적인 작업을 수행하는 함수 간결성, 구조적 접근, 트리나 그래프와 같은 자료 구조에서의 유용성
제너레이터 함수 (Generator Functions) 한 번에 모든 결과를 반환하는 대신 요청시마다 하나씩 결과를 생성 (반환)하는 함수 메모리 효율성, 큰 데이터셋 처리시 유연성

 

파이썬 함수의 세계 시리즈의 2탄에서는 고차 함수, 재귀 함수, 그리고 제너레이터 함수와 같은 고급 함수 유형들을 살펴보았습니다. 이러한 고급 함수 유형들을 실제 코딩에 통합함으로써, 여러분은 코드의 효율성을 한 단계 끌어올릴 수 있게 될 것입니다.