Chapter 11. 함수에 날개 달기: 데코레이터

데코레이터 컨셉

게임을 할 때 기본 캐릭터에 ‘터보 부스터’나 ‘마법 방패’ 같은 아이템을 장착하면 캐릭터의 기본 능력은 그대로 둔 채 새로운 파워가 추가됩니다. 파이썬 프로그래밍에도 이런 아이템 장착 기능이 있는데, 이를 데코레이터(Decorator)라고 부릅니다.

내가 만든 함수를 하나도 건드리지 않고, 그 겉을 마치 선물 포장지처럼 예쁘게 감싸서 로깅을 남기거나, 실행 속도를 빠르게 만들거나, 사용자 권한을 검사하는 마법 같은 기능입니다. 이 장에서는 데코레이터의 강력한 작동 원리와, 이를 가능하게 하는 파이썬의 핵심 개념들을 배웁니다.


📖 목차

  1. 함수가 품은 보물상자: 클로저 (Closure)
    • 함수를 반환하는 함수
    • 외부 변수를 가둬두는 자유 변수(Free Variable)의 비밀
  2. 함수 쪼개기와 기억력: 부분 함수와 메모이제이션
    • 인자를 미리 예약해두는 functools.partial
    • 한 번 푼 문제는 다시 풀지 않는다! functools.lru_cache
  3. 아이템 장착! 함수 데코레이터
    • @ 기호의 정체
    • 실행 전후를 가로채는 wrapper 함수
    • 원래 함수의 신분증을 지켜주는 functools.wraps
  4. 클래스로 만드는 데코레이터
    • __call__ 메서드를 이용한 클래스 기반 데코레이터
    • 클래스 자체에 장착하는 데코레이터 패턴
서브목차