내가 보려고 만든 블로그

<파이썬> Decorator 란? 본문

Python | Web/Python

<파이썬> Decorator 란?

정의김 2021. 8. 15. 23:11

 

 Decorator 는 이름 그대로 함수를 장식하는 역할을 한다. 다음과 같이 "Hello World"를 출력하는 간단한 함수, HelloWorld를 만들었다.

추가로 func라는 인자를 받는 Decorator라는 함수를 만들어주었다. 파이썬에서는 func 라는 이름으로 함수를 인자로 받을수 있다.

이 Decorator라는 함수에 Wrapper라는 이름으로 인자로 받아 실행하게 되는 func 함수의 앞 , 뒤에 print를 넣어 데코레이터의 동작여부를 체크하고 최종적으로 Wrapper를 return 할 수 있도록 하였다.

 이제 이 Decorator에 수식할 함수 HelloWorld를 넣어주고 호출해보면 다음과 같이 "Hello World"의 앞, 뒤에 데코레이터가 동작하는 것을 볼 수있다.

히지만 이 방법보다 가장 많이 볼 수있으며 쉬운 방법이 바로 "@"를 이용하는 것이다.

다음과 같이 수식할 함수의 위에 @Decorator 형태로 데코레이터를 넣어주면 똑같이 동작하는 것을 확인할 수 있다.

또한 데코레이터는 한개뿐만이 아니라 여러개의 함수를 수식해 줄 수 있으며 다음과 같이 사용하면 된다.

@decorator_example1
@decorator_example2
def function_example():

마지막으로 데코레이터는 함수뿐만 아니라 클래스 형태로 사용할 수 있으며 대신 __call__ 매소드를 넣어 callable하게 만들어주기만 하면된다.