데코레이터 - 공통 기능을 분리하는 포장지
모든 명령에 "오류가 나면 예쁘게 알려줘" / "얼마나 걸렸는지 재줘" 같은 공통 기능을 붙이고 싶다면? 매번 코드를 복붙하지 않고, **함수를 감싸는 포장지(래퍼)**를 만듭니다.
python
import time
from functools import wraps
def log_time(func):
"""함수 실행 시간을 측정해서 출력해주는 데코레이터"""
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time() # 시작 시간 기록
result = func(*args, **kwargs) # 원래 함수 실행
end = time.time()
print(f"[로그] {func.__name__} 실행 시간: {end - start:.3f}초")
return result # 원래 함수의 결과는 그대로 돌려줌
return wrapper
@log_time # ← 이 한 줄이면 run_summary에 시간 측정이 자동 적용됨
def run_summary():
...@log_time한 줄만 붙이면 됩니다. 원래 함수 코드는 건드리지 않음- 요구사항: 예외 처리/로그/시간 측정 데코레이터 1개 이상 구현 + 실제 적용
출처: Codyssey-B1/B2-1