본문 바로가기
Python/기본문법

@데코레이터 Decorator (파이썬)

by yororing 2024. 6. 28.

00 개요

  • FastAPI를 사용하는 프로그램를 코드분석하고 있는데 데코레이터 (@어떠한이름)가 나오길래 무엇인지 정리하고자 함

01 Decorator 데코레이터란?

1. 정의

  • '꾸며주는 어떤 것'
  • 함수/메서드에 적용되어 해당 함수/메서드의 기능을 확장/변경하는 역할
  • @기호와 함께 사용되며 함수/메서드 위에 위치
  • 기본적으로 함수를 인자로 받고다른 함수를 반환하는 고차 함수(high-order function)

2. 작동원리

  • 앞으로 생성할 my_decorator(func) 함수는 데코레이터 함수로서 hello() 함수를 인자로 받아 wrapper() 함수를 반환할 것
  • my_decorator(hello) 함수가 담겨진 decorated_hello()를 호출하면 데코레이터가 추가한 내용과 함게 hello 함수의 내용이 출력됨
def my_decorator(func):
    def wrapper():
        print("데코레이터가 추가한 내용")
        func()
        print("데코레이터가 추가한 내용")
    return wrapper

def hello():
    print("안녕하세요")
    
decorated_hello = my_decorator(hello)
decorated_hello()

 

  • @기호를 사용하면 동일한 기능을 더 간단/직관적으로 코드 작성 가능
def my_decorator(func):
    def wrapper():
        print("데코레이터가 추가한 내용")
        func()
        print("데코레이터가 추가한 내용")
    return wrapper

@my_decorator
def hello():
    print("안녕하세요")

hello()

 

참조

  1. https://ctkim.tistory.com/entry/%EB%8D%B0%EC%BD%94%EB%A0%88%EC%9D%B4%ED%84%B0decorator 
  2.  
  3.  
  4.  

'Python > 기본문법' 카테고리의 다른 글

namedtuple (파이썬 자료형)  (0) 2024.07.31
dictionary란 (파이썬 자료구조)  (0) 2024.07.25
_ underscore (파이썬)  (0) 2024.06.28
os (운영체제 작업 모듈)  (1) 2024.06.18
sys (인터프리터 제어 모듈)  (0) 2024.06.13