Python - 장식자(decorator), 데코레이터

BigbrotherShin·2020년 7월 18일
0
post-thumbnail

개요

개념

데코레이터란 무엇일까요? 사전적 의미로는 "장식가" 또는 "인테리어 디자이너" 등의 의미를 가지고 있습니다. 이름 그대로, 자신의 방을 예쁜 벽지나 커튼으로 장식을 하듯이, 기존의 코드에 여러가지 기능을 추가하는 파이썬 구문이라고 생각하시면 됩니다.
출처 - SchoolofWeb :: 파이썬 - 데코레이터 (Decorator)

문법

@decorator_function
def func():
    pass

"@" 심볼과 데코레이터 함수의 이름을 붙여 쓰는 간단한 구문을 사용

기본 예제

def decorator_function(original_function):
    def wrapper_function():
        print '{} 함수가 호출되기전 입니다.'.format(original_function.__name__)
        return original_function()
    return wrapper_function


@decorator_function  #1
def display_1():
    print 'display_1 함수가 실행됐습니다.'


@decorator_function  #2
def display_2():
    print 'display_2 함수가 실행됐습니다.'

# display_1 = decorator_function(display_1)  #3
# display_2 = decorator_function(display_2)  #4

#1#2 함수가 데코레이터 함수에 인자로 전달됩니다.
#3#4도 동작하지만, 일박적으로 데코레이터 문법을 사용합니다.

인자가 있는 데코레이터

데코레이터를 또 다른 함수로 한 번 더 감싸서 인자가 있는 데코레이터도 생성할 수 있습니다.

def my_decorator(param):
    def actual_decorator(func):
        print("Decorating function {}, with parameter {}".format(func.__name__, param))
        return function_wrapper(func)  # assume we defined a wrapper somewhere
    return actual_decorator
    
@my_decorator('argument')
def my_function():
    pass

References

profile
JavaScript, Node.js 그리고 React를 배우는

0개의 댓글