偏函数

本文详细介绍了Python中的偏函数`partial`的使用方法,包括如何固定函数参数、简化函数调用。通过实例展示了如何将`int`函数转换为16进制转换器,以及如何利用偏函数创建新的乘法函数,简化多次乘法操作。同时,还演示了如何通过偏函数设定关键字参数,改变原函数默认行为,例如在`max_list`函数中改变默认比较的阈值。偏函数的应用可以有效降低函数调用复杂性,提高代码可读性和复用性。
摘要由CSDN通过智能技术生成

偏函数

语法:partial(fuc,*args,**keywords)

说明:fuc是一个函数,这个函数可以是自定义函数,也可以是python内置函数;*args是可变参数;**keywords是一个关键字参数

偏函数就是某一种函数带有固定参数的实现,使用偏函数,可以有效的固定预先确定的参数来缓存函数参数,然后在函数运行时获得需要的剩余参数,最后将缓存的函数参数释放并传递到最终的参数中,从而使用最终确定的所有参数去调用函数。

下面通过几个例子理解

一:

partial函数的作用就是将所作用的函数作为partial 函数的第一个参数,原函数的各个参数依次作为partial函数的后续参数,原函数有关键字参数的一定要带上关键字没有则按原有参数顺序进行补充。

例.进制的转换


int_tran = partial(int,base=16)   #转换成整数,此处关键字参数为16,即16进制表示
print(int_tran('100'))            #100为16进制
print(int_tran('100',base=10))    #100为10进制

结果为:

256
100

二:

partial的作用就是把一个函数的某些参数固定住(设置默认值),返回一个新的函数,调用这个新函数就会变得更简单。
偏函数应用的关键是接收函数对象的* args和** keywords参数。其中,对偏函数参数的第二个部分(可变参数),按原有函数的参数顺序进行补充,参数将作用在原函数上,最后偏函数返回一个新函数。

例.定义一个sum函数,参数为* args可变,计算这些可变参数的乘积。普通函数的实现方法如下:

def mult( * args):
    m= 1
    for n in args:
        m=m*n
    return m

#直接调用

print(mult(3,5,6,9))

要在此基础上在继续乘以15,20甚至更多,有如下方法:

  • 直接使用mult
print(mult(3,5,6,9)*mult(15,20))
  • 使用偏函数
#偏函数返回15和20.分别作用在u的第一个参数和第二个参数的位置形成新函数import functools
print(mult(3,5,6,9)*mult(15,20))


result= partial(mult, 15,20)

print(result(3,5,6,9))

三:

对偏函数的第三个部分(关键字参数) ,按原有函数的关键字参数进行填补,参数将作用在原函数上最后偏函数返回一个新函数。

#求列表中大于给定值的数据个数,m位于*后面表示关键字参数,默认取值为10
def  max_list(ls,*,m=10):
    t=0
    for i in ls:
        if i>m:
            t=t+1
    return t
#通过偏函数构建了一个新函数,新函数的第三个关键字参数默认取值为5
new_func = partial(max_list,m=5)
#调用原函数,求大于m的值的个数个
print(max_list([2,6,5,8]))
#调用偏函数,判断的是大于5的数的个数
print(new_func([2,6,5,8]))

结果:

0
2

可以看到运用偏函数可以在一定程度上简化原函数的参数,用 partial可以创建一个新的函数,该新函数可以固定原函数的部分参数,从而保证函数在调用时更简单。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值