python

[python] 일급객체

전감자(◔◡◔) 2022. 9. 26. 20:49
'''

일급 객체 (first-class)
==> 파이썬, javascript

개요:
    함수를 데이터로 처리한다.

    1) 함수를 변수에 저장할 수 있다.
    예>  변수=10
        변수="홍길동
        변수={10,20}

        변수=함수(*****)
    2) 함수를 다른 함수 호출 시 인자값(argument)로 사용 가능하다.
    예>
        fun(10)
        fun("홍길동")
        fun([10,20])

        fun(함수) (******)

    3) 함수 실행 후 리턴 값으로 함수를 사용할 수 있다.

-파이썬의 모든 변수는 참조형
-함수를 만들면 함수명으로 된 변수가 생성
-함수의 객체가 생성
-함수명이 함수객체 참조(함수객체의 주소를 저장)

-사용 1.fun 변수만 사용 n=fun
-사용 2.fun()

'''

def fun():
    print("fun")

print("활용1: 함수를 참조하는 변수만 사용가능",fun)#<function fun at 0x00000243984AE160>
print("활용2: 함수호출해서 실행")
fun()

# 1) 함수를 변수에 저장할 수 있다
xx=fun # 두 개의 변수가 하나의 함수 객체를 참조
fun()
xx()

print()

# 2) 함수를 다른 함수 호출 시 인자값으로 사용가능하다.
# fun3를 호출했는데 fun2가 호출됨 (trigger)함수
def fun1():
    print("fun1")
def fun2():
    print("fun2")

def fun3(f):
    f()

fun3(fun2)

fun3(fun1) #트리거 함수 구현방법 :함수 호출시 함수이름을 파라미터로 전달

# 3) 함수 실행 후 리턴값으로 함수를 사용할 수 있다.

def m():
    print("m")

def m2():
    return m # 다른 함수를 리턴 값으로 사용가능

xxx=m2()
xxx()