Python-----偏函数

本文探讨了Python中偏函数和装饰器的概念及其应用。通过具体示例,讲解了如何使用偏函数减少代码冗余,并对比了偏函数与装饰器在函数包装上的不同之处。

1.抛出问题

计算2个n个数的和再相加

1.2解决

问题非常的简单,实现也十分的容易,无非是两次调用sum函数再相加。但是这种程序看起来显得程序比较低级,且冗余。

def sum(*arg):
    sum_all = 0
    for item in arg:
        sum_all= sum_all + item
    return sum_all


print(sum(1,2,3)+sum(4,5,6)) 
"""
输出为21
"""

1.3改进

虽然再本例中看起来程序并没有改进多少,代码反而变多了。但是在GUI编程等拥有大量重复性参数的时候,能够大量的较少重复阐述的输入。

from functools import partial

def sum_all(*arg):
    sum_all = 0
    for item in arg:
        sum_all= sum_all + item
    return sum_all
sum_partical = partial(sum_all,4,5,6)
print(sum_partical(1,2,3))
print(sum_partical(1,2,4))
print(sum_partical(1,2,5))
"""
输出为21
输出为22
输出为23
"""

2.partical详解

functools.partial(func[,*args][, **keywords])

partial 一共有三个部分:

(1)第一部分也就是第一个参数,是一个函数,这个函数可以是你定义的,也可以是Python内置函数

(2)第二部分是一个可变参数,可选。partial函数会将func的结果加上将args参数代入func的结果。

(3)第三部分是一个关键字参数,可选。原函数有关键字参数的一定要带上关键字。比如内置函数int的第二个参数就是命名关键字参数,默认base=10,表示int转换时默认是10进制的:

3.偏函数和装饰器的区别

偏函数类似于装饰器dectorator,对函数进行二次包装,但又不同于装饰器,偏函数产生一个新函数,而装饰器,可改变装饰函数的函数入口地址也可以不影响原函数。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

装饰器:https://mp.youkuaiyun.com/postedit/81084518

参考:https://blog.youkuaiyun.com/Appleyk/article/details/77609114

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值