본문 바로가기
프로그래밍/Python

Python - Decorator

by 왕거 2020. 7. 22.

파이썬에 있는 데코레이터라는 개념에 대해서 간단하게 정리해보자.

 

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