functools에는 cache가 있다.
이는 deco한 함수의 값을 저장 후 함수를 실행하지 않고 돌려준다.
from functools import cache
from functools import cache
@cache
def f():
print("hey")
f()
f() # cache 값 가져옴
f() # cache 값 가져옴
hey
이를 이용하여 dp를 구현 가능하다.
피보나치 수열을 구하는 함수
from functools import cache
call = 0
@cache
def fibo(n):
global call
call += 1
if n == 0:
return 0
if n == 1:
return 1
return fibo(n-1) + fibo(n-2)
print(fibo(30))
print(call) # 함수 호출 회수
832040 31
from functools import cache
call = 0
def fibo(n):
global call
call += 1
if n == 0:
return 0
if n == 1:
return 1
return fibo(n-1) + fibo(n-2)
print(fibo(30))
print(call)함수 호출 회수
832040 2692537