目录
-
- @functools.cache(user_function):简单轻量级未绑定函数缓存.返回值与lru_cache(maxsize=None) 相同
- @functools.cached_property(func):将一个类方法转换为特征属性,一次性计算该特征属性的值,然后将其缓存为实例生命周期内的普通属性。 类似于对 property() 但增加了缓存功能
- functools.cmp_to_key(func):按照自己设定的规则进行排序,具体看案例
- @functools.lru_cache(user_function):使用 functools 模块的 lur_cache 装饰器,可以缓存最多 maxsize 个此函数的调用结果,从而提高程序执行的效率,特别适合于耗时的函数
- @functools.total_ordering:让类支持比较操作
- functools.partial(func, /, *args, **keywords):就是把原函数的部分参数固定了初始值,新的调用只需要传递其它参数
- class functools.partialmethod(func, /, *args, **keywords):和partial实现相同的功能,只是 partial在类方法中使用会报错,而此函数用在类方法中
- functools.reduce(function, iterable[, initializer ]):将两个参数的函数从左到右累计应用于序列项
- @functools.singledispatch:当有一个函数需要根据传入的"变量的类型"来判断需要输出的内容时,通常的做法是在函数内部使用大量的if/elif/else来解决问题,优化if/elif/else
- class functools.singledispatchmethod(func):singledispatchmethod 和 singledispatch 用法相同, 只是被装饰对象为类的方法
- functools.update_wrapper:用来更新被装饰函数的__name__,__doc__等信息,使其看起来像被装饰的函数
- @functools.wraps
@functools.cache(user_function):简单轻量级未绑定函数缓存.返回值与lru_cache(maxsize=None) 相同
简单轻量级未绑定函数缓存。有时称为”memoize”。
返回值与lru_cache(maxsize=None) 相同,创建一个查找函数参数的字典的简单包装器。因为它不需要移出旧值,所以比带有大小限制的lru_cache() 更小更快。
@functools.cached_property(func):将一个类方法转换为特征属性,一次性计算该特征属性的值,然后将其缓存为实例生命周期内的普通属性。 类似于对 property() 但增加了缓存功能
资料来源:https://www.jianshu.com/p/1c469a93d9f2
将一个类方法转换为特征属性,一次性计算该特征属性的值,然后将其缓存为实例生命周期内的普通属性。 类似于对 property() 但增加了缓存功能。对于在其他情况下实际不可变的高计算资源消耗的实例特征属性来说该函数非常有用
from functools import cached_property
class Foo