python 偏函数

2019-06-02  本文已影响0人  倔强的潇洒小姐

functools.partial:
把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数

场景:当函数的参数个数太多,需要简化时,可以用偏函数

转换二进制字符串:
麻烦写法:

>>> def int2(x, base=2):
...     return int(x, base)
...
>>> int2('1000000')
64
>>> int2('1000001')
65

简单写法:利用偏函数

>>> from functools import partial
>>> int2 = partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1000010001')
529

补充说明:
1、偏函数:实际上可以接收函数对象、*args和**kw这3个参数

int2 = partial(int, base=2)

上述代码实际上固定了int()函数的关键字参数base,所以

int2('10010')

相当于

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

下述代码实际上会把10作为*args的一部分自动加到左边

max2 = functools.partial(max, 10)

所以

max2(5, 6, 7)

相当于

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



2、int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换

image.png
上一篇 下一篇

猜你喜欢

热点阅读