推荐答案
// www.javascriptcn.com code example
from functools import partial, reduce, lru_cache
# 使用 partial 创建新函数
def multiply(x, y):
return x * y
double = partial(multiply, 2)
print(double(4)) # 输出: 8
# 使用 reduce 进行累积计算
numbers = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, numbers)
print(product) # 输出: 24
# 使用 lru_cache 进行函数结果缓存
@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10)) # 输出: 55本题详细解读
partial 函数
partial 是 functools 模块中的一个高阶函数,用于部分应用一个函数。它允许你固定函数的一部分参数,从而创建一个新的函数。这在需要重复调用某个函数但部分参数固定的情况下非常有用。
- 示例:
from functools import partial def multiply(x, y): return x * y double = partial(multiply, 2) print(double(4)) # 输出: 8在这个例子中,partial固定了multiply函数的第一个参数为2,创建了一个新的函数double,它只需要一个参数y。
reduce 函数
reduce 是 functools 模块中的另一个高阶函数,用于对序列中的元素进行累积计算。它接受一个二元函数和一个序列,并将序列中的元素依次传递给二元函数进行累积计算。
- 示例:
from functools import reduce numbers = [1, 2, 3, 4] product = reduce(lambda x, y: x * y, numbers) print(product) # 输出: 24
在这个例子中,reduce使用lambda函数对numbers列表中的元素进行累积乘法计算,最终得到24。
lru_cache 装饰器
lru_cache 是 functools 模块中的一个装饰器,用于缓存函数的结果。它通过最近最少使用(LRU)策略来管理缓存,从而避免重复计算,提高函数执行效率。
- 示例:
// www.javascriptcn.com code example from functools import lru_cache @lru_cache(maxsize=None) def fibonacci(n): if n < 2: return n return fibonacci(n-1) + fibonacci(n-2) print(fibonacci(10)) # 输出: 55在这个例子中,lru_cache装饰器缓存了fibonacci函数的结果,避免了重复计算,显著提高了计算斐波那契数列的效率。