# 기본 데코레이터 def timer(func): import time def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) print(f"{func.__name__}: {time.time()-start:.2f}s") return result return wrapper
@timer def slow_function(): import time time.sleep(1) return "done"
slow_function() # slow_function: 1.00s
# 인자 있는 데코레이터 def retry(times=3): def decorator(func): def wrapper(*args, **kwargs): for i in range(times): try: return func(*args, **kwargs) except Exception as e: if i == times-1: raise return wrapper return decorator
@retry(times=5) def api_call(): ...
Flask의 @app.route, pytest의 @pytest.fixture가 대표적인 데코레이터 활용입니다.
댓글 1
데코레이터는 함수를 감싸서 기능을 추가하는 패턴입니다.
Flask의
@app.route, pytest의@pytest.fixture가 대표적인 데코레이터 활용입니다.