programmer-blog
[Python]decorator(데코레이터) 란 무엇인가 본문
데코레이터(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)
데코레이터가 무엇인가 한 문장으로 정리하면
'함수를 수정하지 않은 상태에서 추가 기능을 구현하기 위해 사용하는 것'
이라고 할 수 있겠다.
참고로 데코레이터는 여러개 중복해서 사용할 수 있다.
'Python' 카테고리의 다른 글
[Python]비공개 속성,메서드에 대해서 (0) | 2020.05.24 |
---|---|
[python]*,** packing에 대해서 (0) | 2020.05.22 |
[Python]__init__과 self란 무엇인가 (0) | 2020.05.21 |
[Python]class,instance,method란 무엇인가. (0) | 2020.05.20 |