programmer-blog

[Python]decorator(데코레이터) 란 무엇인가 본문

Python

[Python]decorator(데코레이터) 란 무엇인가

frogrammer 2020. 5. 24. 14:10

데코레이터(Decorator)는 장식가,디자이너의 사전적 의미를 가지고 있다.
이것에서 무언가를 꾸며주는 역할을 한다고 추측할 수 있듯이, 데코레이터는 함수에 추가적인 기능을 붙이는 역할을 한다.

아래 코드는 데코레이터를 사용해서 함수의 상태를 출력하는 프로그램이다.

def doc_it(func): #매개변수로 함수를 받음
    def new_func(*args,**kwargs):
        print("Running function:",func.__name__)
        print('Positional arguments:',args)
        print('Keyword arguments:',kwargs)
        result = func(*args,**kwargs)
        print('Result:',result)
        return result
    return new_func
def add(a,b):
    return a+b
cooler_add = doc_it(add) #직접 데커레이터 할당
cooler_add(3,5)

 

데커레이터는 함수를 매개변수로 사용한다.

매개변수가 함수인 함수를 데코레이터라고 생각해도 좋다.

위 코드에서는 doc_it(add)를 하고 또 cooler_add라는 함수에 넣었지만 이런 번거로운 방법 없이도 데코레이터를 사용할 수 있다.

아래는 @키워드를 사용해서 데코레이터를 사용하는 예제다.

@doc_it # @을 사용해서 데커레이터 할당
def sub(a,b):
    return a-b
sub(10,5)

데코레이터가 무엇인가 한 문장으로 정리하면

'함수를 수정하지 않은 상태에서 추가 기능을 구현하기 위해 사용하는 것'

이라고 할 수 있겠다.

 

참고로 데코레이터는 여러개 중복해서 사용할 수 있다.