偏函数

作者: 闲云野鹤_23dd | 来源:发表于2021-01-24 16:34 被阅读0次

偏函数

什么是偏函数?

简单的理解偏函数,它是对原始函数的二次封装,是将现有函数的部分参数预先绑定为指定值,从而得到一个新的函数,该函数就称为偏函数。相比原函数,偏函数具有较少的可变参数,从而降低了函数调用的难度。

定义偏函数,需使用 partial 关键字(位于 functools 模块中),其语法格式如下:

偏函数名 = partial(func, *args, **kwargs)

其中,func 指的是要封装的原函数,*args 和 **kwargs 分别用于接收无关键字实参和关键字实参。

# 原始方案
def filter1(l): # 定义一个过滤出列表中偶数的方法
    return list(filter(lambda x: x%2==0,l))

# 调用函数对列表进行过滤
print(filter1([1,2,3,4,5,6,7])) 
print(filter1([11,12,13,14,15,16,17]))
print(filter1([21,22,23,24,25,26,27]))

# 使用偏函数解决
from functools import partial # 导入partial模块

#通过偏函数创建一个新函数,提前传入原函数所需要的参数,让我们在调用的时候更加简单。
filter2 = partial(filter,lambda x:x%2==0)

# 使用偏函数过滤列表数据
print(list(filter2([1,2,3,4,5,6,7])))
print(list(filter2([11,12,13,14,15,16,17])))
print(list(filter2([21,22,23,24,25,26,27])))` 

运行结果为:

[2, 4, 6]
[12, 14, 16]
[22, 24, 26]

结合以上示例不难分析出,偏函数的本质是将函数式编程、默认参数和冗余参数结合在一起,通过偏函数传入的参数调用关系,与正常函数的参数调用关系是一致的。

偏函数通过将任意数量(顺序)的参数,转化为另一个带有剩余参数的函数对象,从而实现了截取函数功能(偏向)的效果。在实际应用中,可以使用一个原函数,然后将其封装多个偏函数,在调用函数时全部调用偏函数,一定程度上可以提高程序的可读性。

偏函数传递关键字参数

# 准备一个原函数
def info(age,name):
    print("姓名:{},年龄{}".format(name,age))

from functools import partial
pinfo = partial(info,age=18) # 定义偏函数时设置默认值

pinfo(name = "xuepl") # 使用偏函数的时候,注意要使用关键字的方式传参,要符合关键字传参的顺序

注意: 上方的例子中,因为在定义偏函数时,设置的默认值为第一个参数,调用偏函数的时候,需要以关键字传参的方案去传递第二个参数

# 准备一个原函数
def info(name,age):
    print("姓名:{},年龄{}".format(name,age))

from functools import partial
pinfo = partial(info,age=18) # 定义偏函数时设置默认值

pinfo("xuepl") # 位置传参
pinfo(name = "xuepl") # 关键字传参都可以` 

上例中,使用偏函数定义默认值的时候,定义的是第二个参数,所以在使用偏函数给第一个参数传参时,既可以使用位置参数和关键字参数

普通函数封装和偏函数封装应用场景

  • 首先都是对他人提供的函数做的二次封装
  • 普通封装适用于在调用方法前后要做些预处理操作
  • 偏函数适用于在调用方法前设置一些默认参数,不能添加预处理操作

练习:

现有原函数:
def f1(a,b,c):
return a+b-c
要求为f1 写一个偏函数,固定传入参数c 为10

def f1(a,b,c):
    return a+b-c
#要求为f1 写一个偏函数,固定传入参数c 为10
pf1=partial(f1,c=10)
print(pf1(1,2))
print(pf1(b=1,a=2))

相关文章

  • 笨笨的学pythonDay06

    接着昨天未学完的函数,还有个偏函数和装饰器,先说一下偏函数,装饰器没有看明白 1.偏函数 偏函数可以通过将函数参数...

  • 偏函数

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

  • 偏函数

    当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。 比如,int()函数...

  • 偏函数

  • 偏函数

    偏函数用法是指创建一个调用另外一个部分—参数或变量已经预置的函数—的函数的用法。这句话相对较为拗口,下面我们以实例...

  • 偏函数

    偏函数: functools模块提供很多有用的功能,其中就有偏函数 tip:int()函数可提供额外的base参数...

  • 偏函数

  • 偏函数

    偏函数

  • 偏函数

    偏函数 什么是偏函数? 简单的理解偏函数,它是对原始函数的二次封装,是将现有函数的部分参数预先绑定为指定值,从而得...

  • 偏函数

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

网友评论

      本文标题:偏函数

      本文链接:https://www.haomeiwen.com/subject/kzuooktx.html