python3.11的functools模块中@functools.cache函数的作用?以列表方式写出该函数必传参数和所有可选参数并说明含义?一个简单的案例并加上注释?
时间: 2023-06-13 21:04:17 浏览: 107
基于python 将列表作为参数传入函数时的测试与理解
5星 · 资源好评率100%
`@functools.cache` 是 Python 3.9 引入的一个装饰器,用于缓存函数的返回值,避免多次计算同一个参数的结果。
必传参数:无
可选参数:
- `typed`:默认为 `False`,如果为 `True`,则不同类型的参数会被缓存为不同的结果。
- `maxsize`:默认为 `128`,缓存的最大大小。
- `typed` 和 `maxsize` 不能同时使用。
下面是一个简单的使用案例:
```python
import functools
@functools.cache
def fibonacci(n: int) -> int:
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10)) # 55
```
这个函数使用递归的方式计算斐波那契数列的第 `n` 项。由于递归计算会重复计算很多相同的值,因此使用 `@functools.cache` 装饰器,将计算结果缓存起来,避免重复计算,提高效率。
阅读全文