태지쌤

로봇 & 코딩교육 No.1 크리에이터

IT관련

파이썬 고차함수 Higher-Order Functions

태지쌤 2025. 1. 8. 18:10
반응형

 

안녕하세요, 파이썬 개발자 여러분! 오늘은 파이썬의 강력한 기능 중 하나인 고차함수(Higher-Order Functions)에 대해 알아보겠습니다. 고차함수는 파이썬을 더욱 유연하고 강력하게 만드는 핵심 개념 중 하나입니다. 자, 그럼 시작해볼까요?

## 고차함수란?

고차함수는 간단히 말해 함수를 다루는 함수입니다. 즉, 다음 두 가지 특징 중 하나 이상을 가진 함수를 말합니다:

1. 하나 이상의 함수를 인자로 받는 함수
2. 함수를 결과값으로 반환하는 함수

이렇게 함수를 인자로 받거나 함수를 반환할 수 있다는 것은 파이썬에서 함수가 일급 객체(first-class object)라는 특성 때문에 가능합니다[1].

## 고차함수의 예시

### 1. 함수를 인자로 받는 고차함수

가장 흔한 예시로 `map()`, `filter()`, `reduce()` 함수가 있습니다. 이들은 모두 함수를 첫 번째 인자로 받습니다.

```python
# map() 예시
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # [1, 4, 9, 16, 25]

# filter() 예시
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # [2, 4]
```



### 2. 함수를 반환하는 고차함수

함수를 생성하고 반환하는 함수도 고차함수입니다. 이는 동적으로 함수를 생성할 때 유용합니다.

```python
def power_function(n):
    def power(x):
        return x ** n
    return power

square = power_function(2)
cube = power_function(3)

print(square(4))  # 16
print(cube(3))    # 27
```



## 고차함수의 장점

1. **코드 재사용성**: 고차함수를 사용하면 코드를 더 모듈화하고 재사용할 수 있습니다[2].

2. **추상화**: 복잡한 로직을 간단한 함수로 추상화할 수 있습니다.

3. **유연성**: 런타임에 동적으로 함수를 생성하거나 수정할 수 있습니다.

## 실제 사용 예시

실제 프로그래밍에서 고차함수는 다양한 방식으로 활용됩니다. 예를 들어, 데이터 처리 파이프라인을 만들 때 유용합니다:

```python
def process_data(data, operations):
    result = data
    for operation in operations:
        result = operation(result)
    return result

data = [1, 2, 3, 4, 5]
operations = [
    lambda x: [i * 2 for i in x],
    lambda x: [i for i in x if i % 2 == 0],
    sum
]

result = process_data(data, operations)
print(result)  # 20
```



이 예시에서 `process_data`는 고차함수로, 여러 연산(함수)을 인자로 받아 순차적으로 적용합니다[3].

## 마치며

고차함수는 파이썬의 강력한 기능 중 하나로, 코드를 더 간결하고 유연하게 만들어줍니다. 처음에는 조금 어렵게 느껴질 수 있지만, 익숙해지면 코딩의 새로운 차원을 경험하게 될 거예요. 여러분도 한번 고차함수를 활용해보세요. 놀라운 가능성을 발견하게 될 거예요!

반응형