반응형
파이썬에서 데코레이터란 기존의 코드에 여러가지 기능을 추가하는 파이썬 구문.
@decorator
def function():
print("I am a decorator!")
위와 같은 코드를 데코레이터라고 말한다.
" @ " 심볼과 데코레이터 함수의 이름을 붙이는 간단한 구문을 사용하면
데코레이터를 사용할 수 있다.
대상함수를 wrapping 하고, 이 wrapping 된 함수의 앞 뒤에 추가적으로
꾸며질 구문들을 정의하여 재사용이 쉽도록 만들어 주는 것이다.
하나의 함수를 취해서 또 다른 함수를 반환하는 함수이다.
def document_it(func):
def new_function(*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_function
document_it 함수에 어떤 func 함수 이름을 전달하든지 간에 document_it( ) 는
추가 선언문이 포함된 새 함수를 얻는데. 데코레이터는 실제로 func 함수로부터 코드를 실행하지 않는다.
하지만 document_it( ) 함수로부터 func 를 호출하여 결과뿐만 아니라 새로운 함수를 얻는다.
데코레이터를 사용하는 방법은 그냥 @데코레이터_이름 추가만 하면된다.
@document_it
def add_ints(a,b):
return a + b
>> add_ints(3,5)
start function add_int
positional arguments : (3,5)
keyword arguments : { }
result: 8
8
add_int 함수는 데코레이터로 설정된 document_it 의 값들을 가져와
아래와 같이 add_ints 의 결과값을 풍부하게 표현할 수 있다.
참고 링크
https://bluese05.tistory.com/30
https://dojang.io/mod/page/view.php?id=2427
반응형
'언어 > Python' 카테고리의 다른 글
Python namedtuple (네임드 튜플) (2) | 2020.06.22 |
---|---|
파이썬의 다형성(Polymorphism) (0) | 2020.06.20 |
[pandas] : 판다스 전처리 할때 도움될만한 코드들 (0) | 2020.06.11 |
Python side project 04 : binary search (이진 탐색) (0) | 2020.05.28 |
Python side project 03 : Email slicer (이메일 슬라이서) (0) | 2020.05.24 |