如何在Python中访问functools库@cache装饰器的内部键值对?
如何访问functools.cache装饰器的内置缓存键值对
functools.cache是Python 3.9+新增的装饰器,本质是lru_cache(maxsize=None)的别名,要访问它的内置缓存键值对,直接操作被装饰函数的cache属性即可,具体操作如下:
- 先调用函数生成缓存(缓存仅在函数被调用后才会生成对应键值对)
- 通过
func.cache.items()遍历所有缓存的键值对,也可以用keys()、values()分别获取缓存的参数和返回值
示例代码:
from functools import cache @cache def func(a1, a2): return a1 + a2 # 调用函数填充缓存 func(1, 2) func(3, 4) # 遍历缓存的键值对 for args, result in func.cache.items(): print(f"参数: {args}, 返回值: {result}")
输出结果:
参数: (1, 2), 返回值: 3 参数: (3, 4), 返回值: 7
注:func.cache是functools._lru_cache_wrapper的实例,支持字典式操作,虽然属于标准库的实现细节,但在CPython环境下使用稳定可靠。
内容的提问来源于stack exchange,提问作者Amish Gupta
相关产品推荐
相关产品推荐

