A decorator is a design pattern in Python that allows a user to add new functionality to an existing object without modifying its structure.
데코레이터란 기존에 존재하는 구문을 수정하지 않고, 새로운 기능을 추가하게 해주는 것
def main_function():
print "MAIN FUNCTION START"
라는 코드가 있다고 해보자 이러한 함수에 앞뒤로 현재 시간을 출력하는 함수를 추가하려고 하면
import datetime
def main_function():
print datetime.datetime.now()
print "MAIN FUNCTION START"
print datetime.datetime.now()
이렇게 추가해야 할 것이다.
위의 함수를 여러번 수행해야 한다면 소스의 코드도 매우 길어질 것이며, 가독성 또한 떨어질 것이다.
이때! Decorator을 사용하게 되는데
Decorator을 사용한 코드를 살펴보자
import datetime
def datetime_decorator(func):
def decorated():
print datetime.datetime.now()
func()
print datetime.datetime.now()
return decorated
@datetime_decorator
def main_function_1():
print "MAIN FUNCTION 1 START"
datetime_decorator라는 Decorator을 선언해주고 수행하려고 하는 func를 받아온다.
이후 원래 수행하려고 했던 func 앞뒤로 수행 할 기능들을 작성해주면 된다
import datetime
def datetime_decorator2(func):
def decorated():
print ("*" *30)
func()
print ("*" *30)
return decorated
def datetime_decorator(func):
def decorated():
print datetime.datetime.now()
func()
print datetime.datetime.now()
return decorated
@datetime_decorator2
@datetime_decorator
def main_function_1():
print "MAIN FUNCTION 1 START"
******************************
{현재시간}
MAIN FUNCTION 1 START
{현재시간}
******************************
위와 같은 출력을 확인 할 수 있다(datetime_decorator2는 datetime_decorator을 꾸며주는 Decorator 함수)막상 장고에서 사용하던 여러가지 이해가 가지 않던 함수들을 알게되다보니 조금 더 장고에 대해 알게 되고, 더 많은 기능을 사용 할 수 있을것 같다. JS공부를 할 때에도 모르는 함수나 구문? 이 있다면 MDN을 꼭 활용해서 이해하고 넘어가면 조금 더 빠르고, 정확한 성장을 할 수 있을것 같음
느리더라고 정확하게 성장하자🔥
20.08.10 위코드2주차 화요일