之前在将装饰器时使用到了functool
里的wpaps
functool 里还有几个很重要的部分值得深入学习 .
- 包括:
- reduce方法
- partial偏函数
- lrc _cache_
接下来将对这些方法进行详细的叙说:
- reduce方法
- reduce方法,顾名思义就是减少
- reduce(function, sequence[, initial]) -> value ★★★★
- 可迭代对象不能为空;初始值没提供就在可迭代对象中取一个元素
from functools import reduce
print(reduce(lambda x,y:x+y, range(5)))#先传入0,和1,相加得到的1 ,此时x赋值为1,后传入2,与x=1 相加,而后在次赋值给x,在传入一个数3,依次往后直到结束.
print(sum(range(5),10)) # sum函数的带初始值相加
print(reduce(lambda x,y:x*y,range(1,5),10)) # reduce 函数带初始值的相乘
>>>
10
20
240
# reduce 的函数定义
# def reduce(function, iterable, initializer=None):
it = iter(iterable)
if initializer is None:
value = next(it)
else:
value = initializer
for element in it:
value = function(value, element)
return value
-
partial方法
-
偏函数,把函数部分的参数固定下来,相当于为部分的参数添加了一个固定的默认值,形成一 个新的函数并返回
-
从partial生成的新函数,是对原函数的封装 ★★★★
-
partial方法举例一
import functools def add(x, y) -> int: return x + y newadd = functools.partial(add, y=5) #偏函数返回的是新函数 print(newadd(7)) print(newadd(7, y=6)) print(newadd(y=10, x=6)) import inspect print(inspect.signature(newadd)) >>> 12 13 16 (x, *, y=5) -> int
partial方法举例二: