functools模块
reduce方法:
- reduce方法
- reduce方法,顾名思义就是减少
- 可迭代对象不能为空,初始值没提供就在可迭代对象中去一个元素
from functools import reduce nums = [6,9,1,3,5,6,1] print(nums) print(sum(nums)) print(reduce(lambda val,x: val+x,nums))
partial方法:
- 偏函数,把函数部分的参数固定下来,相当于为部分的参数添加了一个固定的默认值,形成一个新的函数并返回
- 从partial生成的新函数,是对原函数的封装
import functools def add(x,y): return x+y newadd = functools.partial(add,y=5) print(newadd(7)) print(newadd(7,y=6)) print(newadd(y=10,x=6))
源代码
def partial(func, *args, **keywords): def newfunc(*fargs, **fkeywords): # 包装函数 newkeywords = keywords.copy() newkeywords.update(fkeywords) return func(*(args + fargs), **newkeywords) newfunc.func = func # 保留原函数 newfunc.args = args # 保留原函数的位置参数 newfunc.keywords = keywords # 保留原函数的关键字参数参数 return newfunc