Python——偏函数

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。

偏函数是将所要承载的函数作为  partial()  函数的第一个参数,原函数的各个参数依次作为  partial()  函数的后续参数,除非使用关键字参数。

通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。

int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:

>>> int('123466')
123466

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

>>> int('10' ,base =16)
16
>>>
>>>
>>> int('10' ,base =2)
2

假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:

functools.partial 就是帮助我们创建一个偏函数的,不需要我们自己定义  int2(),可以直接使用下面的代码创建一个新的函数int2

>>> import functools
>>>
>>> int2 = functools.partial( int ,base = 2)
>>>
>>> int2('1010')
10
>>> int2('1001')
9
>>> int2('1010',base = 10)
1010

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

int2函数仅仅是把  base 参数重新设定默认值为 2,但也可以在函数调用时传入其他值。

【例】实现整数 100 对不同数 m 的 100%m 的取余函数。

>>> def modn(n,m):
...     return n%m
...
>>>
>>> mod100 = partial( modm ,100)
>>>
>>>
>>> mod100( 7)
2
>>> modm(100, 7)
2
>>> mod100( 12)
4

猜你喜欢

转载自blog.csdn.net/qq_41573234/article/details/81781306
今日推荐