面试题答案
一键面试-
常用缓存模块:
functools.lru_cache
:这是Python标准库functools
中的一个函数装饰器,用于实现LRU(Least Recently Used)缓存,它会自动缓存函数的返回值,当相同参数再次调用时,直接返回缓存中的值,提高函数执行效率。适用于纯函数(相同输入始终返回相同输出)场景。cachetools
:是一个功能丰富的第三方缓存库,提供多种缓存类型,如TTLCache
(带过期时间的缓存)、LRUCache
等。
-
使用
functools.lru_cache
对函数进行缓存示例:
import functools
@functools.lru_cache(maxsize=128)
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
在上述代码中,@functools.lru_cache(maxsize=128)
装饰器应用于fibonacci
函数。maxsize
参数指定缓存可以存储的最大项数,设置为None
时表示缓存大小无限制。这样,每次调用fibonacci
函数时,如果参数已经在缓存中,就直接返回缓存的结果,大大提升了函数性能,尤其是在计算斐波那契数列这种递归调用开销较大的场景。