[Python]First-Class

Jay·2023년 1월 4일
0
post-thumbnail

First-Class Citizen

프로그래밍 언어에서 first-class citizen 속성을 가진다는 것은 아래와 같은 조건을 만족하는 객체를 의미합니다.

  1. 다른 객체의 매개변수로 전달할 수 있다.
  2. 함수의 반환값으로 사용될 수 있다.
  3. 변수나 자료구조에 할당할 수 있다.

파이썬의 정수 자료형들은 first-class citizen입니다. 다른 객체에게 매개변수로 전달될 수 있고, 변수나 자료구조에 할당되며 반환값으로 사용될 수 있기 때문입니다. 반면 C 언어에서 array는 first-class citizen이 아닙니다. array가 전달될 때 array의 첫번째 원소 주소값이 전달되는 것이기 때문에 array 자체가 매개변수로 사용되지 못하기 때문입니다.
이처럼 자료형이나 함수 등을 그 자체 매개변수로 전달하거나 반환값으로 사용될 수 있으면, first-class citizen 속성을 가지고 있다고 표현하게 됩니다.

First-Class Function

함수가 first-class citizen 속성을 가지고 있다면, 해당 함수를 first-class function입니다. 자료형과 마찬가지로 변수에 함수를 할당하고, 매개변수나 반환값으로 함수를 전달할 수 있습니다.

def square(x):
	return x*x
    
f = sqare
print(sqare(10))	# 100
print(f(10))		# 100

square 함수를 정의하여 변수 f에 할당하였고, f를 함수처럼 매개변수를 사용하여 호출하였습니다.

def sqare(x):
	return x*x
    
def bind(func, arg_list):
	result = []
    for arg in arg_list:
    	result.append(func(arg))
    return result
    
arg_list = [1,2,3]
print(bind(square, arg_list))	# [1,4,9]

이번에는 함수를 다른 함수의 매개변수로 전달하여 호출하였습니다. 이처럼 함수를 하나의 객체로서 매개변수로 전달하고, 반환값으로 사용함으로서 코드를 다양한 방법으로 사용하고 동작을 구현할 수 있습니다.


0개의 댓글