[TIL] decorator (데코레이터)

김성진·2020년 10월 15일
0
post-thumbnail

Decorator

이번 1차프로젝트에서 로그인에 대한 인가를 구현하기 위해 템플렛을 보고 어찌어찌 구현한 로그인 데코레이터가 충분하지 못해, 데코레이터에 대해 좀더 깊이 공부해보기로 했다.
Definition:
장식하다, 꾸미다라는 뜻으로 함수를 장식해서 사용하기 때문에 데코레이터이다. 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용한다.(ex, 로그인 인가 등) "@"로 작성된 함수를 호출한다.

코드1:

코드2:

위 두개의 코드를 보면 출력값은 같지만, 호출 명령어가 다르다.
1번:

def hello():
  print('hello')
def world():
  print('world')
  
trace_hello = trace(hello)
trace_hello()
trace_world = trace(world)
trace_world()

2번:

@trace
def hello():
  print('hello')
@trace
def world():
  print('world')

hello()
world()

이유는 두번째 코드에 @를 사용해 이미 함수 위에 데코레이터를 씌워주었기 때문에 출력하는 함수 값만 입력하면 데코레이터 함수를 자동적으로 인식하기 때문이다.

profile
multi-national communicator with programming (back-end)

0개의 댓글