Python - First-class citizen

Enjoywater·2020년 8월 23일
0

TIL

목록 보기
6/33
post-thumbnail

First-class citizen

파이썬 및 다른 프로그래밍 언어에 관해 보다보면
일급객체 / first-class citizen / first-class object 와 같은 말을 볼 수 있다.

일급객체란

  • 변수나 데이터 구조에 넣을 수 있어야 한다
  • 매개변수로 전달할 수 있어야 한다
  • return값으로 사용할 수 있어야 한다

위 조건들을 만족시킬 수 있는 객체를 말한다.

파이썬에서는 대표적으로 함수를 예로 들 수 있다.


ex)

  • 변수나 데이터 구조에 넣을 수 있어야 한다
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로 전달된 두 함수가 각각 실행이 되어 출력된 것을 확인 할 수 있다.


  • return값으로 사용할 수 있어야 한다
def testOne(func):
    def inner():
        print("Enjoy" + " " + func())
    return inner()
  
@testOne    
def testTwo():
    return "Water"

testOne 함수는 func를 parameter로 받으며, inner 함수를 반환한다.
inner 함수는 문자열과 func를 합쳐서 출력시키는 함수로 정의되었다.

위 코드를 실행시킨 결과값은

Enjoy Water

반환된 함수가 정상적으로 작동하는 것을 알 수 있다.

profile
블로그 이전 👉🏻 enjoywater.tistory.com

0개의 댓글