데코레이터
- 함수가 실행되면 데코레이터에서 선언 된 코드가 같이 실행된다.
- 어떤 함수든 위에 @(elapsed)를 붙이면 실행 가능하다는 것이 장점이다.
def says(func): # 2.cats function을 받음(가지고만 있음)
def dog():
func() # 3.여기서 cats를 실행함
print("니가 해준게 뭐야")
return dog
@says # 1.얘가 실행
def cats():
print("오늘 밥 안줬잖아!")
cats()
#출력
#오늘 밥 안줬잖아!
#니가 해준게 뭐야
def wrapper_function(func):
def decorate():
print('함수 이전에 실행')
func()
print('함수 이후에 실행')
return decorate
def basic():
print('실행하고자 하는 함수')
new = wrapper_function(basic)
new()
#위와 아래가 같다
@wrapper_function
def basic2():
print('실행하고자 하는 함수')
def double_number(func): # 2.double_number 함수를 가져옴
def wrapper(a, b):
double_a = a * 2
double_b = b * 2
return func(double_a, double_b) # 3.double_numer 인자를 받고 리턴
return wrapper
#얘는 double_number를 찾아가서 최종적으로 a*2 + b*2를 함
@double_number # 1.데코레이터 실행
def double_number_add(a, b):
return a + b
#얘는 그냥 a+b 값을 구함
def add(a, b):
return a + b
double_number_add(2, 5)
#출력 : 14
'Python' 카테고리의 다른 글
[Python] syntactic sugar (0) | 2023.03.24 |
---|---|
[Python] return과 print (1) | 2023.03.24 |
[Python] 클로저(Closure) (0) | 2023.03.23 |
[Python] 클래스 if __name__ =="__main__": (0) | 2023.03.23 |
[Python] 클래스 self (0) | 2023.03.23 |