python的functools模块

Posted s-p-l

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的functools模块相关的知识,希望对你有一定的参考价值。

functools模块

partial方法:偏函数,把函数部分的参数固定下来,相当于为部分的参数添加了一个固定的默认值,形成一个新的函数并返回,从partial生成的新函数,是对原函数的封装

 

partial函数本质:

 

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

lru:Least-recently-used装饰器,最近最少使用,cache缓存

 如果maxsize设置为None,则禁用LRU功能,并且缓存可以无限制增长。当maxsize是二的幂 时,LRU功能执行得最好 ; 如果typed设置为True,则不同类型的函数参数将单独缓存。例如,f(3)和f(3.0)将被视为具有不 同结果的不同调用

例:

 lru_cache装饰器 :通过一个字典缓存被装饰函数的调用和返回值 

使用:同样的函数参数一定得到同样的结果 ,函数执行时间很长,且要多次执行 ,本质是函数调用的参数=>返回值 

缺点:不支持缓存过期,key无法过期、失效 ,不支持缓存过期,key无法过期、失效 ,不支持分布式,是一个单机的缓存 

使用场景:,单机上需要空间换时间的地方,可以用缓存来将计算变成快速的查询

lru_cache()的斐波那契数列递归的改造:

 

以上是关于python的functools模块的主要内容,如果未能解决你的问题,请参考以下文章

python的functools模块

Python 模块简介 -- functools

python 中的匿名函数lamda和functools模块

Python标准库--functools模块

python 装饰器和 functools 模块

python functools.wraps装饰器模块