python的偏函数functools.partial

通过设定函数参数的默认值,可以降低函数调用的难度,偏函数刚好可以做到这一点。
int()可以把字符串转换为整数,默认转化成十进制

>>> int('123456')
123456

也可以传入两个参数:

>>> int('123456', base=8) #base是需要转成的进制,此处是8进制
42798

如果每次转成的都是同一个进制,那每次都需要传入base参数,这样就有点繁琐了。当然我们可以写成一个新的函数:

>>> def int1(x, base=2):
...     return int(x, base)
...
>>> int1('10000000')
128
>>> int1('10000001')
129
>>>

而偏函数functools.partial就是用来帮助我们创建偏函数的,免去我们自定义函数

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('11000000') #此处base默认值是2
192
>>> int2('11000001')
193
>>> int2('11000001', base=8) #我们在调用的时候还可以改变base的值
2359297
>>> int2('11000001', base=10)
11000001
>>>

使用偏函数求最大值

>>> max2 = functools.partial(max, 10) #此出传入10的意思是,无论max2传什么参数都把10加入左侧
>>> max2(1, 2, 11) #最大值11
11
>>> max2(1, 2, 3) #最大值10
10

猜你喜欢

转载自blog.csdn.net/qq_29144091/article/details/81346308