Python 데코레이터(Decorator) 사용법: 초보자~중급자 가이드
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

데코레이터(Decorator) 사용법

분야

프로그래밍/소프트웨어 개발

대상자

Python 개발자, 함수 확장 및 메타데이터 관리에 관심 있는 개발자

  • 난이도: 초보자~중급자, 기초 문법 이해 필수

핵심 요약

  • *데코레이터는 함수를 감싸서 추가 기능을 쉽게 추가하는 구문**
  • @decorator 문법으로 함수 정의 시 기능 확장 가능
  • functools.wraps 사용 시 원본 함수 메타데이터 유지
  • __call__, __init__ 메서드를 통해 데코레이터 동작 정의

섹션별 세부 요약

  1. 데코레이터 개념 소개
  • 함수를 감싸는 구조로, 원래 함수를 변경하지 않고 기능 추가
  • @decorator 문법으로 간결하게 사용 가능
  • 라이브러리에서 자주 사용되며 로깅, 타이밍 측정 등 활용
  1. 데코레이터 생성 방법
  • def decorator(func):로 함수를 감싸는 데코레이터 정의
  • @wraps(func)로 원본 함수 정보 유지 (예: __name__, __doc__)
  • __call__ 메서드를 통해 함수 호출 시 동작 정의
  1. 데코레이터 적용 예시
  • 함수에 @decorator 추가 시 자동 감싸짐
  • functools.wraps 생략 시 메타데이터 손실 가능성
  • 로깅 데코레이터 예시:

```python

@wraps(func)

def wrapper(*args, **kwargs):

print("Start")

result = func(*args, **kwargs)

print("End")

return result

```

결론

  • *데코레이터는 함수 기능 확장에 유용한 패턴**
  • functools.wraps 사용으로 메타데이터 보존 필수
  • 로깅, 타이밍 측정 등 실무에서 자주 활용되는 기능
  • 함수를 변경하지 않고 추가 기능 적용 가능해 유지보수성 향상
  • 사용 전후 메타데이터 확인을 통해 의도한 동작 여부 검증 권장