前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测开之函数进阶· 第5篇《偏函数》

测开之函数进阶· 第5篇《偏函数》

作者头像
清菡
发布2021-01-04 14:40:12
4230
发布2021-01-04 14:40:12
举报
文章被收录于专栏:清菡软件测试清菡软件测试

什么是偏函数

偏函数在functools的模块里有个partial,这个东西就叫做偏函数。

怎么用偏函数?

当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可固定住原函数的部分参数,从而在调用时更简单。

偏函数可以帮我们固定参数,简化参数调用的流程。如果当前有个接口,去调用这个接口的时候,这个接口需要传 50 个参数,你发现前面 49 个参数都是一样的不会变化的,这 49 个参数设置成必须要传的参数,只有一个变化的参数,调用的时候非常不方便。

偏函数可以将前面 49 个参数固定住,再次调用的时候只需要传一个参数(只需传那个变化的参数)。

之前学到的内置函数中filter中,调用的时候需要传入 2 个参数,第一个是函数,第二个是需要过滤的可迭代类型的数据。

代码语言:javascript
复制
# 可以通过传入不同的过滤条件去过滤出来我们需要的数据

filter(lambda x:x>3,li)
filter(lambda x:x>5,li)

用偏函数,代码可以这样写:

代码语言:javascript
复制
from functools import partial

# 过滤掉小于5的数据,大于5的数据全部保留下来了

li1 = [1, 2, 3, 11, 22, 33]
li2 = [1, 2, 3, 11, 22, 33]
li3 = [1, 2, 3, 11, 22, 33]
li4 = [1, 2, 3, 11, 22, 33]
li5 = [1, 2, 3, 11, 22, 33]
li6 = [1, 2, 3, 11, 22, 33]
li7 = [1, 2, 3, 11, 22, 33]


# 之前的写法

# filter(lambda x:x>5,li)
# filter(lambda x:x>5,li2)
# filter(lambda x:x>5,li3)
# filter(lambda x:x>5,li4)

#那么这个时候每次都要传入同样的参数,比较麻烦。

#通过偏函数创建一个新函数,提前传入原函数所需要的参数,调用的时候更简单。

li = [1, 2, 122, 331, 11, 22, 33, 4, 6, 7, 2, 88, 31]
filter2 = partial(filter, lambda x: x > 5)
res=filter2(li)
print(list(res))
res2=filter2(li2)
print(list(res2))

functools的源码:

它的意思是不定行参数(随便多少参数都可以)。

  • 郑重声明:公众号“清菡软件测试”首发,更多原创文章:清菡软件测试 114+原创文章,欢迎关注、交流,禁止第三方未经同意擅自转载。

热文精选

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是偏函数
  • 怎么用偏函数?
  • 热文精选
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档