파이썬 및 다른 프로그래밍 언어에 관해 보다보면
일급객체 / first-class citizen / first-class object 와 같은 말을 볼 수 있다.
일급객체란
- 변수나 데이터 구조에 넣을 수 있어야 한다
- 매개변수로 전달할 수 있어야 한다
- return값으로 사용할 수 있어야 한다
위 조건들을 만족시킬 수 있는 객체를 말한다.
파이썬에서는 대표적으로 함수
를 예로 들 수 있다.
def testOne():
print("Enjoy")
def testTwo():
print("Water")
front = testOne
back = testTwo
front()
back()
print(type(front))
print(type(back))
testOne, testTwo 함수를 정의한 후에 front, back에 담아보았다.
실행 및 type판별을 해보면
Enjoy
Water
<class 'function'>
<class 'function'>
front, back 변수가 각각 testOne, testTwo함수를 정상적으로 담아서 실행시켰고 type이 'function'으로 나타나는 걸 확인 할 수 있다.
def testOne():
return "Enjoy"
def testTwo():
return "Water"
def result(one, two):
print(one() +" "+ two())
result(testOne, testTwo)
2개의 parameter를 받아서 합친 후 출력시키는 result함수가 있다.
testOne, testTwo 함수를 넣고 result 함수를 호출시켜보면,
Enjoy Water
로 결과값이 나오게 된다.
result 함수에서 parameter로 전달된 두 함수가 각각 실행이 되어 출력된 것을 확인 할 수 있다.
def testOne(func):
def inner():
print("Enjoy" + " " + func())
return inner()
@testOne
def testTwo():
return "Water"
testOne 함수는 func를 parameter로 받으며, inner 함수를 반환한다.
inner 함수는 문자열과 func를 합쳐서 출력시키는 함수로 정의되었다.
위 코드를 실행시킨 결과값은
Enjoy Water
로 반환된 함수가 정상적으로 작동하는 것을 알 수 있다.