
python functools模块方法
结论:重复计算的里面添加上
发布日期:2021-05-07 09:24:26
浏览次数:17
分类:精选文章
本文共 1794 字,大约阅读时间需要 5 分钟。
cache
模块
cache方法可以自动在缓存中或取已经计算过的数据
实例展示from functools import cacheimport timea = time.time()#未执行函数前的时间戳# 自动在缓存中或取已经计算的相同结果@cachedef fun1(n): # 下面是一个求阶乘的公式 return n* fun1(n-1) if n else 1o= fun1(400)b=time.time()#执行了一次函数的时间戳print(o)d=time.time()#计算输出print()函数的时间戳p=fun1(399)print(p)c=time.time()#计算再次执行函数之后的时间戳print("{h}计算fun1(400)用时".format(h=b-a))print("{f}计算输出用时".format(f=d-b))print("{g}计算再次计算fun1(399)用时".format(g=c-b))
没有使用cache

#使用format格式化 {:f}为保留小数点后6位 {:.8f}则为保留小数点后8位print("{h:f}计算fun1(400)用时".format(h=b-a))print("{f:.8f}计算输出用时".format(f=d-b))print("{g:f}计算再次计算fun1(399)用时".format(g=c-b))
lru_cache
模块
maxsize
:指定最大缓存数目,(maxsize=None)未没有限制
typed
:(typed=true)将不同类型的参数分别缓存如f(3)与f(3.0)将分别存储, (typed=False)则为否 cache_parameters
:返回一个子类型,包含它所在装饰器参数 cache_clear()
:清空缓存 lru_cache
:里面当缓存满了就会自动清理掉末尾的数据,清理的目标是很被少访问的数据(根据历史访问时间记录) 理解cache
为lru_cache
的精简版 from functools import lru_cache# 自动在缓存中或取已经计算的相同结果@lru_cache(maxsize=100,typed=False)def fun1(n): # 下面是一个求阶乘的公式 return n* fun1(n-1) if n else 1
warps
先说明函数的基础使用方法
def f(): ''' 1:查看函数使用方法 本段文字为本函数的使用方法,在命令行中可以执行查看 使用命令:help(函数名字)[help(f)], 2:查看函数名字 命令:f.__name__ print(f.__name__) ''' "linux电脑好用"
左图
调用ccc.__name__
输出ccc()函数的名字为: bbb
print(ccc.__doc__)
输出为:bbb函数的使用方法 help(ccc)
得到的为 Help on function bbb in module __main__:bbb() bbb函数的使用方法
右图
调用ccc.__name__
输出ccc()函数的名字为: ccc print(ccc.__doc__)
输出为:ccc函数的使用方法 help(ccc)
得到的为 Help on function bbb in module __main__:ccc() ccc函数的使用方法
调用wraps
from functools import wrapsdef aaa(kk): @wraps(kk) def bbb(): '''bbb函数的使用方法''' return kk() return bbb@aaadef ccc(): '''ccc函数方法的使用说明''' eee="一段文字或者方法" print(eee)print(ccc.__name__)print(ccc.__doc__)#或者help(ccc)
bbb.__name__ =kk.__name__ bbb.__doc__ =kk.__doc__
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月14日 05时57分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
springboot通过控制层跳转页面404
2019-03-05
idea2020 没有 tomcat server
2019-03-05
为什么讨厌所谓仿生AI的说法
2019-03-05
ORACLE 客户端工具
2019-03-05
云服务器springboot jar项目开启jmx remote监控-解决无法连接的问题
2019-03-05
Pyinstaller打包的exe文件过大的解决方法
2019-03-05
Linux的软链接跟Windows快捷方式一样?
2019-03-05
更改github的默认语言类型
2019-03-05
使用第三方sdk,微信wechat扫码登录
2019-03-05
mysql中的行转列
2019-03-05
基于LabVIEW的入门指南
2019-03-05
PCB布局系列汇总
2019-03-05
电容入门知识
2019-03-05
2019CCPC女生专场赛_K - Tetris_打表/模拟_暴力之王
2019-03-05
“/”应用程序中的服务器错误。
2019-03-05
MUI之ajax获取后台接口数据
2019-03-05
使用sqlserver 查询不连续的数据
2019-03-05
用div+css+html+js 实现图片放大
2019-03-05