파이썬 데코레이터 제대로 쓰기
pingulee조회 0 · 댓글 0
데코레이터는 함수를 받아 함수를 돌려주는 함수다.
import functools, time
def timed(fn):
@functools.wraps(fn)
def wrap(*a, **kw):
t = time.perf_counter()
r = fn(*a, **kw)
print(f'{fn.__name__}: {time.perf_counter()-t:.4f}s')
return r
return wrapfunctools.wraps를 잊지 말자
이걸 빼면 감싼 함수의 이름과 독스트링이 사라진다. 디버깅할 때 반드시 후회한다.
인자를 받는 데코레이터
데코레이터에 옵션을 주려면 한 겹을 더 감싼다. 처음엔 헷갈리지만 "함수를 돌려주는 함수를 돌려주는 함수"로 생각하면 풀린다.
댓글 0
첫 댓글을 남겨보세요.