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:里面当缓存满了就会自动清理掉末尾的数据,清理的目标是很被少访问的数据(根据历史访问时间记录)
理解cachelru_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__
上一篇:curl: (52) Empty reply from server
下一篇:python可视化执行幻影坦克

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月14日 05时57分08秒