파이썬에서 함수는 1급 객체(first-class object)이다.
1급 객체(first-class object)
프로그래밍 언어 디자인에서 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체
보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원하는 객체를 말한다.
이 글에서는 1급 객체의 조건 중 하나인 변수에 함수를 할당하여 사용하는 방법에 대해 다룬다.
기본 사용
테스트 함수
두 수를 입력받아 그 합을 반환하는 더하기 함수를 예시로 들고자 한다.
def plus(a, b):
return a + b
변수에 테스트 함수 할당
result라는 변수에 테스트 함수를 할당한다.
함수를 호출해 반환 값을 변수에 저장하는 것과 함수를 변수에 저장하는 것의 차이를 구분해야 한다.
# 함수를 변수에 저장
result = plus
# 함수 호출 및 그 반환값을 변수에 저장
tmp = plus(3, 2)
변수에 저장한 테스트 함수 호출
print(result(3, 10))
실행 결과
딕셔너리 또는 리스트에 함수 저장
리스트 등의 자료구조 내에 함수를 저장하여 사용하는 것도 가능하다.
def plus(a, b):
return a + b
def minus(a, b):
return a - b
# 함수를 리스트에 저장
result = [plus, minus]
print(f"result[0] {result[0](3, 10)}")
print(f"result[1] {result[1](3, 10)}")
# 함수를 딕셔너리에 저장
result_dict = {"plus": plus, "minus": minus}
print(f"result_dict[plus] {result_dict['plus'](3, 10)}")
print(f"result_dict[minus] {result_dict['minus'](3, 10)}")
참고 문서
https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B8%89_%EA%B0%9D%EC%B2%B4