
- 기존 함수가 그대로 동작하면서 추가 문장이 더 실행되는 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
'Python > 공통이론' 카테고리의 다른 글
Python - 커맨드 라인 인수 접근하기 (0) | 2023.04.13 |
---|---|
Python - 이터레이터 & 제너레이터 (0) | 2023.04.12 |
Python - 가변 길이 인수 리스트 (0) | 2023.04.11 |
Python - doc string (0) | 2023.04.11 |
Python - 함수 테이블(리스트, 딕셔너리)로 case문 구현 (0) | 2023.04.11 |