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
广告