본문 바로가기

개발/Python

부스트캠프 AI Tech 3기 Pre-Course [2]-3 decorate,일급객체, inner function

일급객체 : first-class objects

변수나 데이터 구조에 할당이 가능한 객체

파라미터나 리턴값으로 사용 가능

 

파이썬의 함수는 모두 일급함수이다!

def square(x):
    return x*x

f=square
print(f(5))

f(5)나 square(5)나 같은 결과를 얻을 수 있다.

 

def formula(method, argument_lis):
    return [method(value) for value in argument_list]

clmethod에 세제곱, 네제곱, 다섯제곱 등 행할 연산이 들어간다고 하면, 

구조와 체계를 만들어 주어 편하게 사용할 수 있다.

 

내재 함수 : inner function

함수 내에 또 다른 함수가 존재

def print_msg(msg):
    def printer():
        print(msg)
    printer()
    
print_msg("Hello")

printer라는 내재함수가 존재하는 예제이다.

closures

inner function을 return 값으로 반환

def print_msg(msg):
    def printer():
        print(msg)

    return printer()

a = print_msg("Hello")
a

>>Hello

a를 실행할 때 마다 printer안의 print(msg)가 실행될 것이다.

decorator

복잡한 closure funcion을 간단하게 만들어 준다

def star(func):
    def inner(*args,**kwargs):
        print(args[1] *30)
        func(*args, **kwargs)
        print(args[1] * 30)
    return inner
    
@star
def printer(msg, mark):
    print(msg)
printer("Hello", "T")

>>TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
Hello
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

printer가 star의 파라미터인 func가 된다.

 

 

Reference:  부스트캠프 AI Tech 3기 Pre-Course-Python Object Oriented Programming