파이썬 데코레이터 만들기와 사용법에 대해 조금 정리해둔다.
데코레이터?
함수를 인자로 받는 함수다!
함수도 객체이기 때문에 함수 객체의 주소를 다른 함수에 파라미터로 넘길 수 있는 것이다. 리턴 역시 함수로 나올 수 있는 것
ex)
import time
def make_time_checker(func):
def new_func(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
print('실행시간:', end_time - start_time)
return result
return new_func
@make_time_checker
def big_number(n):
return n ** n ** n
@make_time_checker
def big_number2(n):
return (n+1) ** (n+1) ** (n+1)
실행시간을 체크하는 함수를 데코레이터 없이 쓰면 매 실행마다 똑같은 작업을 모든 함수의 처음과 끝에 넣어줘야 하지만 데코레이터를 쓰면 간편하게 만들 수 있다.
@decorator
를 통해 데코레이터를 사용할 수 있다. 위 이미지의 왼쪽방법도 데코레이터를 사용하는 다른 방법이다.
https://wikidocs.net/23106
https://dojang.io/mod/page/view.php?id=2427
https://bluese05.tistory.com/30