파이썬에 있는 데코레이터라는 개념에 대해서 간단하게 정리해보자.
closure 개념과 관련된 기능으로 어떤 함수가 실행되기 전에 먼저 실행되어야만 하는 조건을 가진 함수가 있다면 데코레이터를 적용하기 위해 만들어진 상황이다.
def decorator_function(original_function):
def wrapper_function():
print("함수가 호출되기 전")
return original_function()
return wrapper_function
@decorator_function #1
def display_1():
print("display1 실행")
@decorator_function #2
def display_2():
print("display2 실행")
display_1()
display_2()
###############################################
#실행 결과
함수가 호출되기 전
display1 실행
함수가 호출되기 전
display2 실행
@심볼을 사용하면 더 편하게 데코레이터 함수를 호출 할 수 있다.
@심볼을 사용한 데코레이터에 인자를 전달할 수도 있는데 이 경우에는 기본적으로 2중으로 정의되어있는 데코레이터 함수를 한번 더 감싸는 방법을 사용해서 처리할 수 있다.
def name_decorator(name):
def real_decorator(func):
def name_attend():
return func() + name
return name_attend
return real_decorator
@name_decorator("World!")
def greeting():
return "Hello, "
print(greeting())
#####################################
#실행 결과
Hello, World!
'프로그래밍 > Python' 카테고리의 다른 글
Python - Class (0) | 2020.07.23 |
---|---|
Python - range와 scope (0) | 2020.07.22 |
Django 기본 (0) | 2020.07.07 |
Pyinstaller 사용해서 PyQt5 UI포함한 실행파일 빌드 방법 (2) | 2020.06.26 |
Python - isdeciaml, 사용자 정의 함수, None (0) | 2020.06.22 |