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

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值