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进制的转换
网友评论