[python] 일급 함수와 클로저의 차이점은 무엇인가요?
일급 함수와 클로저는 파이썬에서 함수형 프로그래밍을 지원하는 중요한 개념입니다. 이 둘 사이에는 몇 가지 차이점이 있습니다.
일급 함수 (First-class functions)
- 일급 함수는 다른 변수와 마찬가지로 변수에 저장하고 전달할 수 있는 특징을 가지고 있습니다.
- 함수를 변수에 할당하여 참조하거나, 함수를 다른 함수의 인자로 전달하거나, 함수를 다른 함수의 반환값으로 사용할 수 있습니다.
- 일급 함수는 만들어진 곳과 실행되는 곳이 다를 수 있습니다.
def add(a, b):
return a + b
# 함수를 변수에 할당
sum_func = add
# 변수로 함수 실행
result = sum_func(3, 4)
print(result) # 출력: 7
클로저 (Closure)
- 클로저는 함수 안에서 정의된 내부 함수와 this 함수가 참조하는 스코프를 포함한 환경을 함께 저장하는 개념입니다.
- 클로저는 외부 함수의 실행이 종료되더라도 내부 함수가 외부 함수의 변수에 접근할 수 있게 해줍니다.
- 제한된 스코프 밖에서 내부 함수를 호출하더라도 외부 함수의 변수를 계속 사용할 수 있습니다.
def outer_func(x):
def inner_func(y):
return x + y
return inner_func
add_by_five = outer_func(5)
result = add_by_five(3)
print(result) # 출력: 8
클로저는 외부 함수의 변수를 보호하고, 내부 함수가 외부 변수에 계속 접근하면서 필요한 상태를 유지하는 데에 활용됩니다. 일급 함수와 달리 클로저는 주로 함수를 반환하는 데에 초점을 맞추고 있습니다.
일급 함수와 클로저는 함수형 프로그래밍의 핵심 개념으로서, 함수를 다른 변수와 마찬가지로 다룰 수 있다는 유연성과 코드의 모듈성을 높여줍니다.
더 자세한 내용은 다음 참고 자료를 참고하세요.