Python/공통이론
Python - 데코레이터
zeroup
2023. 4. 12. 21:18

- 기존 함수가 그대로 동작하면서 추가 문장이 더 실행되는 wrapper 함수
>>> import time
>>>
>>> # 데코레이터
>>> def make_timer(func) :
>>> def wrapper(*args, **kwargs) :
>>> t1 = time.time()
>>> ret_val = func(*args, **kwargs)
>>> t2 = time.time()
>>> print('소요시간 :', t2-t1)
>>> return ret_val
>>> return wrapper
>>>
>>> # 원본함수
>>> def count_nums(n) :
>>> for i in range(n) :
>>> for j in range(1000) :
>>> pass
>>>
>>> # 함수 wrapping
>>> count_nums = make_timer(count_nums)
- 이제 원본함수(count_nums)를 호출할 경우 소요시간이 출력되는 동작이 추가된다.
- 함수 선언시 키워드를 추가하면 따로 함수 wrapping을 하지 않아도 된다.
>>> @make_timer
>>> def count_nums(n) :
>>> for i in range(n) :
>>> for j in range(1000) :
>>> pass