프로그래밍 언어가 함수 (function) 를 first-class citizen으로 취급하는 것을 뜻한다.
쉽게 설명하자면 '함수 자체'를 '인자 (argument) 로써' 다른 함수에 전달하거나 다른 함수의 결과값으로 리턴 할수도 있고, 함수를 변수에 할당하거나 데이터 구조안에 저장할 수 있는 함수를 뜻한다.
first-class citizen(1급 객체)
아래 3가지 조건을 충족한다면 1급 객체라 할 수 있다.
1. 변수나 데이터에 할당 할 수 있어야 한다.
2. 객체의 인자로 넘길 수 있어야 한다.
3. 객체 리턴값으로 리턴 할수 있어야 한다.
사실상 python에서 모든 함수는 first-class 이다.
def squre(x):
return x*x
def cube(x):
return x*x*x
def quad(x):
return x*x*x*x
def power(func, arr):
result = []
for i in arr:
result.append(func(i))
return result
num = [1,2,3,4,5]
print(power(square, num))
>> [1, 4, 9, 16, 25]
print(power(cube, num))
>> [1, 8, 27, 64, 125]
print(power(quad, num))
>> [1, 16, 81, 256, 625]