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. 일급 함수가 중요한 이유
- 유연성 제공: 함수를 데이터처럼 다룰 수 있어 더 유연하고 가독성 있는 코드 작성이 가능합니다.
- 재사용성 증가: 동적으로 함수를 생성하여 반복 코드를 줄일 수 있습니다.
- 함수형 프로그래밍: 고차 함수(map, filter 등)를 사용할 때 필수적입니다.
참고 사이트
• Real Python - Python Functions
• GeeksforGeeks - Python First-Class Functions
이 블로그는 일급 함수의 강력함을 보여주며, Python 개발자가 이해하고 활용해야 할 중요한 개념을 설명하였습니다. 추가적인 예제나 질문이 있다면 언제든지 알려주세요!