【GHS】测开之函数进阶·

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-12-30

## 什么是偏函数 偏函数在`functools`的模块里有个`partial`,这个东西就叫做偏函数。 ## 怎么用偏函数? **当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可固定住原函数的部分参数,从而在调用时更简单。** 偏函数可以帮我们固定参数,简化参数调用的流程。如果当前有个接口,去调用这个接口的时候,这个接口需要传 50 个参数,你发现前面 49 个参数都是一样的不会变化的,这 49 个参数设置成必须要传的参数,只有一个变化的参数,调用的时候非常不方便。 偏函数可以将前面 49 个参数固定住,再次调用的时候只需要传一个参数(只需传那个变化的参数)。 之前学到的内置函数中`filter`中,调用的时候需要传入 2 个参数,第一个是函数,第二个是需要过滤的可迭代类型的数据。 ```PYTHON # 可以通过传入不同的过滤条件去过滤出来我们需要的数据 filter(lambda x:x>3,li) filter(lambda x:x>5,li) ``` 用偏函数,代码可以这样写: ```PYTHON 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(filterfilter2 = partial(filter, lambda x: x > 5) res=filter2(li) print(list(res)) res2=filter2(li2) print(list(res2)) ``` 看`functools`的源码: ![](https://gitee.com/qinghanstudy/qinghan/raw/master/img/20201228142652.png) 它的意思是不定行参数(随便多少参数都可以)。 ![](https://gitee.com/qinghanstudy/qinghan/raw/master/img/20201228143014.png) - **郑重声明**:公众号“清菡软件测试”首发,更多原创文章:清菡软件测试 114+原创文章,欢迎关注、交流,禁止第三方未经同意擅自转载。 ## 热文精选 - [我膨胀了,测试必要商城小程序,用了 3 种方式!:)](
本帖含有隐藏内容,请您 回复 后查看
) - [Appium 之测试微信小程序](
本帖含有隐藏内容,请您 回复 后查看
) - [Appium 上下文和 H5 测试(二)](
本帖含有隐藏内容,请您 回复 后查看
) - [Appium 上下文和 H5 测试(一)](
本帖含有隐藏内容,请您 回复 后查看
) - [从 0 开始用 Hexo 框架搭建个人博客(无坑版)](
本帖含有隐藏内容,请您 回复 后查看
) - [Appium 常用操作之「Toast 提示信息获取」](
本帖含有隐藏内容,请您 回复 后查看
) - [放假整理的四个知识,附带小工具](
本帖含有隐藏内容,请您 回复 后查看
) - [Appium 常用操作之「元素定位、swipe 滑屏操作」](
本帖含有隐藏内容,请您 回复 后查看

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    106

  • 帖子

    82

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0432s Mem:2055Kb