Skip to content

데코레이터 - 공통 기능을 분리하는 포장지 ​

모든 명령에 "오류가 나면 예쁘게 알려줘" / "얼마나 걸렸는지 재줘" 같은 공통 기능을 붙이고 싶다면? 매번 코드를 복붙하지 않고, **함수를 감싸는 포장지(래퍼)**를 만듭니다.

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