본문 바로가기

카테고리 없음

Python: 일급함수(first-class Functions) 개념 정리

1. 일급 함수란?

프로그래밍 언어에서 함수가 일급 객체(First-Class Citizen)로 취급된다는 것은, 함수를 변수처럼 다룰 수 있고, 함수에 다른 함수나 데이터를 전달하거나 반환값으로 사용할 수 있다는 의미입니다. 파이썬은 함수형 프로그래밍을 지원하며, 함수 자체를 일급 객체로 취급합니다.

 

2. 일급 함수의 주요 특징

일급 함수로서의 함수는 다음과 같은 특징을 가집니다:

  • 변수에 함수 할당이 가능함
  • 함수를 다른 함수의 인자로 전달 가능함
  • 함수를 다른 함수의 반환값으로 사용할 수 있음
  • 데이터 구조에 저장 가능함

3. 일급 함수의 특성에 대한 예제

 

1. 변수에 함수 할당

 

파이썬은 함수도 하나의 객체로 취급하므로, 함수를 변수에 할당하면 해당 변수를 함수처럼 사용할 수 있습니다.

#factorial 예제
def fact(n):
    if n == 1:
        return n
    return n * fact(n-1) # 재귀함수 이용
# 변수에 함수 할당
var_func = fact
print(var_func(10)) #출력 3628800

 

 

2. 함수를 인자로 전달

 

함수를 다른 함수의 인자로 전달하면, 함수 내에서 해당 함수 호출이 가능합니다.

def add(x, y):
    return x + y

def operate(func, a, b):
    return func(a, b)

# 함수 전달
result = operate(add, 5, 3)
print(result)  # 출력: 8

 

 

3. 함수를 반환값으로 사용

 

함수를 반환하는 함수를 작성하여 동적으로 함수를 생성하거나 반환할 수 있습니다.

def multiplier(factor):
    def multiply(number):
        return factor * number
    return multiply

# 함수 반환 및 호출
double = multiplier(2)
print(double(5))  # 출력: 10

 

 

4. 데이터 구조에 저장

 

리스트, 딕셔너리 등 데이터 구조에 함수를 저장하고 관리할 수 있습니다.

def square(x):
    return x * x

def cube(x):
    return x * x * x

# 함수 저장
functions = [square, cube]
for func in functions:
    print(func(3))  # 출력: 9, 27

 

4. 일급 함수가 중요한 이유

  1. 유연성 제공: 함수를 데이터처럼 다룰 수 있어 더 유연하고 가독성 있는 코드 작성이 가능합니다.
  2. 재사용성 증가: 동적으로 함수를 생성하여 반복 코드를 줄일 수 있습니다.
  3. 함수형 프로그래밍: 고차 함수(map, filter 등)를 사용할 때 필수적입니다.

참고 사이트

 

Python 공식 문서 - Functions

Real Python - Python Functions

GeeksforGeeks - Python First-Class Functions

 

이 블로그는 일급 함수의 강력함을 보여주며, Python 개발자가 이해하고 활용해야 할 중요한 개념을 설명하였습니다. 추가적인 예제나 질문이 있다면 언제든지 알려주세요!