일급객체란?

일급 객체(First-class citizen)는 OOP에서 사용되는 개념 중 하나로 아래의 조건을 만족하는 객체를 의미합니다. 이는 추후 클로저(closure)와 데코레이터(Decorator)를 이해하는데 필수적인 개념이다.

  • 데이터 처럼 사용가능하다.
  • 매개변수로 전달할 수 있어야 한다.
  • 리턴값으로 사용될 수 있어야 한다.

파이썬에서는 함수도 일급객체이다.


1. 데이터 처럼 사용가능하다.

함수를 변수에 할당 가능

def func(x, y):
    return x+y

add = func
print(add(3,4))

함수를 리스트(튜플, 딕셔너리..)등의 자료구조에 할당 가능

def mul(x, y):
    return x * y

def div(x, y):
    return x / y

calculator = [mul, div]
print(calculator[0](5,6))

2. 매개변수에 넘겨 줄 수 있다.

def inputData():
    data = input("데이터 입력>>>")
    return data

def start(func):  # 함수를 인자로 받음
    print("입력한 데이터는", func())

start(inputData)

image


3. 리턴값으로 사용될 수 있다.

def plusTen(a):
    return a + 10

def func(x):
    return plusTen(x)

print(func(5))

결과
15