partial函数介绍(含代码示例)
partial函数介绍
partial函数在python的functools模块中,这个函数原型如下:
partial(func, *args, **keywords)
这个函数调用时,返回一个partial对象,partial对象类似于带有位置参数args和关键字参数keywords的func对象。如果有更多的参数提供时,它们加在args后面,如果提供了额外的关键字参数,它们会扩展和覆盖关键字参数,大致相当于
def partial(func, /, *args, **keywords):def newfunc(*fargs, **fkeywords):newkeywords = {**keywords, **fkeywords}return func(*args, *fargs, **newkeywords)newfunc.func = funcnewfunc.args = argsnewfunc.keywords = keywordsreturn newfunc
partial函数用于partial function application,partial function application是指的:固定函数参数及关键字的某些部分,生成一个具有简化签名的新对象。
如果看到这里还是一脸懵,那么举个例子,就很容易明白了:
int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换,int()函数提供了base参数,默认值为10,如果传入base参数为N,就可以做N进制的转换。
>>> int('10')
10>>> int('10', base=2)
2
如果我们想要默认按二进制转换的类似int的函数,这时候就可以利用partial
>>> from functools import partial
>>> int2 = partial(int, base=2)
>>> int2('10')
2
>>>
那这样做的好处是什么?
如果我们每次都使用传入base参数的方式,当转换大量的二进制字符串时,每次都使用int(‘10’, base=2)会非常麻烦,毕竟多传了一个参数。
可以看出来functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),然后返回一个新的函数,再调用这个新函数时,参数会减少,使用会更简单。
更多的例子
定义一个函数less,该函数有两个参数a,b,函数的作用令a缩小为原来的1/b.
利用partial函数,设置默认缩小为原来的1/10的函数。
from functools import partialdef less(a, b):return a/bless10 = partial(less, b=10)
print(less10(10))
那么,当我们相对一个list进行上述操作的时候,怎么办?我们很容易可以想到用循环的方式,其实还有一个更好的方法,就是使用map函数。
map(function,iterable,…)
返回一个迭代器,它将函数应用于iterable的每个项目,并产生结果。如果传递了额外的可迭代参数,则 函数必须接受那么多参数并并行应用于所有可迭代的项目。对于多个可迭代对象,迭代器会在最短的可迭代对象耗尽时停止。
map()函数第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列。map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。**当传入多个可迭代的序列时,传入的第一个函数必须对应有与序列个数一致的参数,相当于序列依次传入函数中。**关于map函数更多的内容,参考:https://zhuanlan.zhihu.com/p/205466485
具体实现如下:
a = [1, 2, 3, 4]
res = list(map(less10, a))
print(res)
打印下结果:
这时候看,代码的可读性是不是变高了。
参考链接:
https://blog.csdn.net/zhongbeida_xue/article/details/78973936
https://www.cnblogs.com/jdwfff/p/10519368.html
https://blog.csdn.net/qq_42832858/article/details/85238601
partial函数介绍(含代码示例)相关推荐
- python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...
本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...
- python画折线图代码-Python绘制折线图和散点图的详细方法介绍(代码示例)
本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...
- Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数【含代码】)- 案例篇
文章目录 Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数[含代码])- 案例篇 效果截图: 重要代码: 附:全部HTML代码: Ajax异步请求(重渲染DOM元素时,如何自动调 ...
- OpenCV函数用法详解21~30,含代码示例,可直接运行
opencv3 文章目录 opencv3 1.图像加权和 2.图像加密与解密 3.数字水印 4.色彩空间类型转换 5.dst = cv2.inRange(src, lowerb, upperb) 6. ...
- php中使用mysql的视图_MYSQL中视图的用法介绍(代码示例)
本篇文章给大家带来的内容是关于MYSQL中视图的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.什么是视图 执行一条SQL,将结果集保存在一张虚拟表中 (相关 ...
- predicate java_java8中predicate的用法介绍(代码示例)
本篇文章给大家带来的内容是关于java8中predicate的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 传递代码 我们首先看一个例子,假设你有一个 Appl ...
- mysql统计数据的代码_MySQL按时间统计数据的方法介绍(代码示例)
本篇文章给大家带来的内容是关于MySQL按时间统计数据的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在做数据库的统计时,经常会需要根据年.月.日来统计数据,然 ...
- python解方程代码_Python解方程的技巧介绍(代码示例)
本篇文章给大家带来的内容是关于Python解方程的技巧介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. numpy numpy 用来解方程的话有点复杂,需要用到矩阵的思 ...
- STC89C52单片机DS1302介绍以及代码示例
目录 DS1302介绍 引脚定义与应用电路 内部结构框架图 寄存器定义 时序定义 BCD码 时间设置上的一些问题 代码示例: DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充 ...
最新文章
- EyeQ进展The Evolution of EyeQ
- delphi保存为html文件,如何在程序中将powerpoint生成html页面。就是和在powerpoint另存为html格式的一样(120分)...
- SSM-查询数据库获取下拉框的值并作为查询的筛选条件
- 产品经理怎么做可行性分析?
- mysql8.0新建用户登录_Mysql8.0 创建远程登陆账户
- 如何清空c盘只剩系统_C盘满了怎么办?除了重装系统,还有这些办法!
- 重构现有代码:Refactoring
- 蓝桥杯 ADV-205 算法提高 拿糖果 java版
- 讨论:癌症能被人类攻克吗
- 如何在手机上快速制作小一寸证件照
- 办理签证用的在职证明中英文版
- eNSP华为路由器与交换机连接
- Windows 中包括的 USB 设备类驱动程序
- CRM上线之路 走上了CRM实施顾问-第100天上班 -第21周
- [BZOJ3161]孤舟蓑笠翁
- 探秘 VMware Tanzu Kubernetes 发行版
- 使用Qt编辑关闭窗口程序的一些见解
- windows下tomcat集群配置(两种方法)
- 基于RNN的英文姓名的性别预测
- switch log