【廖雪峰】函数式编程-偏函数

偏函数

functools提供的极有用的功能之一。通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。
设定参数的默认值的正常写法

print(int('11',base=2))
def int2(s,base=2):
    return int(s,base)
print(int2('11'))

但是有了functools提供的functools.partial,我们就能轻松做到这一点。

int2 = functools.partial(int, base=2)

创建偏函数时,实际上可以接收函数对象、*args**kw3个参数,当传入刚刚的参数时,实际上固定了int()函数的关键字参数base。相当于

kw = { 'base': 2 }
int('10010', **kw)

因为base=2作为参数是一个kw。这在函数参数那边讲过。
当传入:

max2 = functools.partial(max, 10)

实际上会把10作为*args的一部分自动加到左边,也就是:

max2(5, 6, 7)

相当于

args = (10, 5, 6, 7)
max(*args)

结果是10.

当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

猜你喜欢

转载自blog.csdn.net/weixin_41687289/article/details/81879712
今日推荐