표준 라이브러리에서 제공하는 데커레이터

매일 공부(ML)·2022년 12월 23일
0

Fluent Python

목록 보기
47/130

객체로서의 함수

함수 데커레이터와 클로저

표준 라이브러리에서 제공하는 데커레이터

파이썬에서 데커레이터하기 위한 것은 property(), classmethod(), statoc,etjpd)를 제공한다.
이 중 자주 보는 것은 functools.warps()로, 제대로 작동하는 데커레이터를 만들기 위한 헬퍼이다.


functools.lru_cache()를 이용한 메모이제이션

functools.lru_cache()는 실제로 쓸모가 많은 데커레이터로, 메모이제이션을 구현하고, 이전에 실행한 값비싼 함수의 결과를 저장함으로써 이전에 사용된 인수에 대해 다시 꼐산할 필요가 없게 해준다.

#fibo_demo.py: 피보나치 수열에서 n번째 숫자를 아주 값비싸게 계산하는 방식

from clockdeco import clock
@clock
def fibonacci(n):
	if n < 2:
    	return n
    return fibonacci(n-2) + fibonacci(n-1)
   
if __name__ =='__main__':
	print(fibonacci(6))
#캐시로 이용한 빠른 구현

import functools:

from clockdeco import clock
@functools.lru_cache()

@clock
def fibonacci(n):
	if n <2:
    	return n
    return fibonacci(n-2) + fibonacci(n-1)
    
if __name__ == '__main__':
	print(fibonacci(6))
    
#시그니처

functools.lru_cache)maxsize=128, typed=False)
profile
성장을 도울 아카이빙 블로그

0개의 댓글