from functools import lru_cache
@lru_cache(maxsize=1, typed=True)
def func(s):
print(s)
return s
func(1)
1
Out[4]: 1
func(1)
Out[5]: 1
func(2)
2
Out[6]: 2
func(2.0)
2.0
Out[7]: 2.0
- 不難看出 第一次調用func 傳入1 是既列印了1 又傳回了1 第二次調用相同的func 傳入1時,未列印 隻傳回
- 傳入2.0 和2的會被認為是不同的調用,重新整理緩存
- lru_cache 的參數maxsize 代表能緩存幾個函數執行的結果 typed代表是否參數類型改變時是否重新緩存