Decorator(데코레이터)

김도형·2021년 3월 27일
0

python

목록 보기
1/2

데코레이터의 존재는 파이썬을 처음 공부할 때부터 알고 있었으나 사용하지 않다보니 어느 순간 잊혀진 ...
프로젝트를 진행하다가 특정 함수의 잦은 사용을 다른 방식으로 구현하고 싶다는 생각에 데코레이터를 사용하게 되었다.

데코레이터란?

이름 그대로 장식을 하듯, 기존의 코드에 여러가지 기능을 추가하는 파이썬 문법의 하나라고 보면 됩니다.

데코레이터의 구조

from functoos import wraps


def out_func(func):  # 기능을 추가할 함수를 인자로 (인자 이름으로는 무엇으로 설정해도 무관)
    
    @wraps(func) 
    def inner_func(*args, **kwargs): 

        return func(*args, **kwargs) 2
    
    return inner_func 1
    

위의 경우 코드의 흐름은 다음과 같습니다

  1. 인자로 들어온 함수가 실행되기 전 실행될 함수 호출
  2. 인자로 들어온 함수 호출

결론적으로 데코레이터를 호출될 함수 위에 @out_func 이런 식으로 붙여 주면
함수가 호출되기 전 데코레이터로 만들어 놓은 함수가 먼저 호출이 됩니다.

데코레이터는 저의 경우 한번에 이해가 가지는 않았고 아직 익숙하지 않아 데코레이터를 구현해놓고도 흐름이 한번에는 이해가 가지 않았습니다. 익숙해지는게 답인 듯 ...

자주 써봄으로서 익숙해져야 할 거 같습니다.

profile
같이 일하고 싶은 개발자 되기

0개의 댓글