python—装饰器@lru_cache在递归中的使用

文章目录

      • 1.装饰器@lru_cache介绍
      • 2. 装饰器@lru_cache使用

1.装饰器@lru_cache介绍

  装饰器@lru_cache介绍:这个装饰器实现了备忘的功能,是一项优化技术,把耗时的函数的结果保存起来,避免传入相同的参数时重复计算。lru 是(least recently used)的缩写,即最近最少使用原则。表明缓存不会无限制增长,一段时间不用的缓存条目会被扔掉。

@functools.lru_cache(user_function)
@functools.lru_cache(maxsize=128, typed=False)

maxsize 是保存最近多少个调用的结果,最好设置为 2 的倍数,默认为 128。如果设置为 None 的话就相当于是 maxsize 为正无穷了。还有一个参数是 type,如果 type 设置为 true,即把不同参数类型得到的结果分开保存,如 f(3) 和 f(3.0) 会被区分开。
官网

2. 装饰器@lru_cache使用

70. 爬楼梯以leetcode为例,展示装饰器@lru_cache的效果

class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 1:
            return 1
        elif n == 2:
            return 2
        else:
            return self.climbStairs(n-1) + self.climbStairs(n-2)

在这里插入图片描述
加入装饰器@lru_cache后

class Solution:
    @lru_cache
    def climbStairs(self, n: int) -> int:
        if n == 1:
            return 1
        elif n == 2:
            return 2
        else:
            return self.climbStairs(n-1) + self.climbStairs(n-2)

在这里插入图片描述


如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!
在这里插入图片描述


你可能感兴趣的:(#,基础进阶,装饰器,备忘,python)