Python - AI 助手

Python functools lru_cache() 函式



Python 的 **lru_cache()** 函式是一個裝飾器,它使用一個可呼叫物件包裝函式,在使用相同引數的輸入操作期間,該物件可以更高效地呼叫函式。這會快取最近 maxsize 次呼叫的結果。LRU 是“最近最少使用”(Least Recently Used)的縮寫。

此函式的預設最大大小為 128,它將指定要快取的最近呼叫次數。

語法

以下是 **lru_cache()** 函式的語法。

lru_cache(maxsize = 128, typed = False)

引數

**lru_cache()** 函式的引數如下所示:

  • **maxsize:** 此引數指定快取大小,用於儲存最近使用的函式。如果大小設定為 None,則 LRU 功能將被停用。
  • **typed:** 不同型別的函式引數將分別快取。

返回值

此函式返回包裝原始元資料的裝飾函式。

示例 1

在下面的示例中,我們使用指定最大大小的 **lru_cache()** 函式查詢給定字串中母音的數量。

from functools import lru_cache 
@lru_cache(maxsize = 110) 
def count_vowels(x): 
    x = x.casefold() 
    return sum(x.count(vowel) for vowel in 'aeiou') 
print(count_vowels("Welcome to Turoialspoint"))

輸出

結果生成如下:

10

示例 2

現在,我們使用lru_cache()計算斐波那契數列,數列從0和1開始,每個後續數字是前面兩個數字的和。

from functools import lru_cache
@lru_cache(maxsize=100)
def fib(x):
    if x < 4:
        return x
    return fib(x-2) + fib(x-1)
print(fib(20))

輸出

程式碼生成如下:

10946

示例 3

在這個例子中,我們使用lru_wraps()函式透過快取結果來演示效能,同時計算一個數字在20進位制下的各位數字之和。

from functools import lru_cache
@lru_cache(maxsize=100)
def sum(x):
    if x == 0:
        return 0
    return x % 20 + sum(x // 20)
print(sum(2398564))

輸出

輸出結果如下:

61
python_modules.htm
廣告