본문 바로가기

Study/FastCampus

[python] Decolator - ①

728x90
반응형
  • Decolator : 함수를 받아 명령을 추가한 뒤 이를 다시 함수의 형태로 반환하는 함수
  • 함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용하며, 일반적으로 함수의 전처리나 후처리에 대한 필요가 있을 때 사용을 한다. 또한, Decolator를 이용하여 반복을 줄일 수 있다.

예를 들어 아래와 같은 함수가 정의되어 있다고 가정을 하자.

 

def plus(a, b):
    print("start")                # code 1
    result = a + b                # code 2
    print(f"result : {result}")   # code 3
    return result

def minus(a, b):
    print("start")                # code 1
    result = a - b                # code 4
    print(f"result : {result}")   # code 3
    return result

 

여기서 중복되는 code 1, 3을 데코레이터를 이용하면 다음과 같이 바뀔 수 있다.

 

def disp(func):
    def wrapper(*args, **kwargs):     
        print("start")                # code 1
        result = func(*args, **kwargs) # code 2, 4
        print(f"result : {result}")   # code 3
        return result
    return wrapper
    
@disp
def plus(a, b):
    result = a + b                # code 2
    return result

@disp
def minus(a, b):
    result = a - b                # code 4
    return result

plus(1,2)
<출력결과>
start
result : 3

minus(1,2)
<출력결과>
start
result : -1

 

728x90
반응형