파이썬 가이드 13 데코레이터

🏷️ 파이썬

데코레이터 (Decorator)

Python 데코레이터는 함수나 메서드를 수정하지 않고 기능을 추가할 수 있게 해주는 파이썬의 강력한 기능입니다. 데코레이터는 다른 함수를 인자로 받는 함수이며, 데코레이트된 함수를 감싸서 추가 기능을 제공한 후 새로운 함수를 반환합니다.

데코레이터의 기본 개념:

  1. 함수를 인자로 받음: 데코레이터는 하나 이상의 함수를 인자로 받습니다.
  2. 내부 함수 정의: 데코레이터는 일반적으로 원래 함수를 감싸는 새로운 내부 함수를 정의합니다.
  3. 기능 추가: 내부 함수 안에서 원래 함수를 호출하기 전이나 후에 추가적인 로직을 실행합니다.
  4. 내부 함수 반환: 데코레이터는 이 내부 함수를 반환합니다.

사용 예시:


<!-- -->
# 1. 간단한 데코레이터 정의
def my_decorator(func):
    def wrapper():
        print("함수 실행 전!")
        func()
        print("함수 실행 후!")
    return wrapper


<!-- -->
# 2. 데코레이터 사용 (@데코레이터이름)
@my_decorator
def say_hello():
    print("안녕하세요!")


<!-- -->
# 3. 데코레이트된 함수 호출
say_hello()

출력:

함수 실행 전!
안녕하세요!
함수 실행 후!

위 예시에서 my_decoratorsay_hello 함수를 감싸서 say_hello가 호출될 때 "함수 실행 전!"과 "함수 실행 후!"라는 메시지를 추가로 출력하게 합니다. @my_decorator 문법은 say_hello = my_decorator(say_hello)와 동일한 역할을 합니다.

데코레이터의 일반적인 용도:

데코레이터는 코드의 재사용성을 높이고, 함수 본연의 로직과 부가적인 기능을 분리하여 코드를 더 깔끔하고 유지보수하기 쉽게 만듭니다.