Python/기본문법
@데코레이터 Decorator (파이썬)
yororing
2024. 6. 28. 15:16
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()
참조