博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python functools.lru_cache做备忘功能
阅读量:5167 次
发布时间:2019-06-13

本文共 942 字,大约阅读时间需要 3 分钟。

import timeimport functoolsdef clock(func):    @functools.wraps(func)#还原被装饰函数的__name__和__doc__属性    def clocked(*args,**kwargs):#支持关键字参数        t0 = time.perf_counter()        result = func(*args,**kwargs)        elapsed = time.perf_counter()- t0        name = func.__name__        arg_lst = []        if args:            arg_lst.append(','.join(repr(arg) for arg in args))        if kwargs:            pairs = ['%s = %r' % (k,w) for k,w in sorted(kwargs.items())]            arg_lst.append(','.join(pairs))        arg_str = ','.join(arg_lst)        print('[%0.8fs]%s(%s) -> %r' % (elapsed,name,arg_str,result))        return result    return clocked@functools.lru_cache(maxsize=128,typed = False) #把耗时的函数结果保存起来,避免传入相同的参数重新计算,typed=true,把浮点数和整数分开保存@clockdef fibonacci(n):    if n <2:        return n    return fibonacci(n-2) + fibonacci(n-1)if __name__ == '__main__':    print(fibonacci(30))

 

转载于:https://www.cnblogs.com/Erick-L/p/8329358.html

你可能感兴趣的文章
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>
菜鸟“抄程序”之道
查看>>
Ubuntu下关闭防火墙
查看>>
TCP/IP 邮件的原理
查看>>