Python 데코레이터(Decorator)

Posted by jungbbong
2015. 5. 30. 03:11 프로그래밍/Python

파이썬에서 가장 중요한 구문중 하나인 데코레이터


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


데코레이터를 쓸때 사용하는 키워드인 @


@를쓰는 파이썬의 데코레이터는 자바의 어노테이션과는 다르게 사용된다 ->해당글은 파이썬의 데코레이터만 다루기 때문에 자바의 어노테이션은 생략한다


디자인 패턴중 하나로도 알려진 데코레이터는 이름에서 직관적으로 알수 있듯, 함수의 선언할때붙어서 해당 함수를 꾸며주는 기능이다


아래의 코드는 파이썬의 데코레이터의 샘플 코드이다 




코드에서 보면 알수 있듯 function앞에 @decorator가 붙어서 함수앞에 부가적인 작업을 하도록 하는것이다.


python은 함수마저도 객체로 사용된다 그렇기때문에 함수안에 내용을 덧붙이지않고 해당 객체와는 다르게 돌아가도록 섞이지는 않지만 꾸며줄수는 있도록 


원래의 작업앞에 필요한 작업을 하도록 한다.



출력내용

hello world


이제 python의 decorator를 이용하여 elapsed time을 찍어주는 프로그램으로 변화시켜보도록하겠다



출력내용

welcome to

hello world

with python


출력내용을 보면 알수 있듯 decorator는 함수의 수행할때 함수객체를 파라메터값으로 받아서서 함수의 앞뒤를 꾸며줄수도 있으며 함수의 전처리과정에 개입을 하는 역할을 하기도한다.



html에 쓰이는 tag표시를 할때에 많이 쓰이는 기법이기도 하다 




여기에서는 덧붙임 말을 표현하고 있지만 다른 응용의 예로는 함수의 수행시간을 계산할때에도 사용된다.




참고사이트