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函数介绍(含代码示例)相关推荐

  1. python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  2. python画折线图代码-Python绘制折线图和散点图的详细方法介绍(代码示例)

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  3. Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数【含代码】)- 案例篇

    文章目录 Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数[含代码])- 案例篇 效果截图: 重要代码: 附:全部HTML代码: Ajax异步请求(重渲染DOM元素时,如何自动调 ...

  4. OpenCV函数用法详解21~30,含代码示例,可直接运行

    opencv3 文章目录 opencv3 1.图像加权和 2.图像加密与解密 3.数字水印 4.色彩空间类型转换 5.dst = cv2.inRange(src, lowerb, upperb) 6. ...

  5. php中使用mysql的视图_MYSQL中视图的用法介绍(代码示例)

    本篇文章给大家带来的内容是关于MYSQL中视图的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.什么是视图 执行一条SQL,将结果集保存在一张虚拟表中 (相关 ...

  6. predicate java_java8中predicate的用法介绍(代码示例)

    本篇文章给大家带来的内容是关于java8中predicate的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 传递代码 我们首先看一个例子,假设你有一个 Appl ...

  7. mysql统计数据的代码_MySQL按时间统计数据的方法介绍(代码示例)

    本篇文章给大家带来的内容是关于MySQL按时间统计数据的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在做数据库的统计时,经常会需要根据年.月.日来统计数据,然 ...

  8. python解方程代码_Python解方程的技巧介绍(代码示例)

    本篇文章给大家带来的内容是关于Python解方程的技巧介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. numpy numpy 用来解方程的话有点复杂,需要用到矩阵的思 ...

  9. STC89C52单片机DS1302介绍以及代码示例

    目录 DS1302介绍 引脚定义与应用电路 内部结构框架图 寄存器定义 时序定义 BCD码 时间设置上的一些问题 代码示例: DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充 ...

最新文章

  1. EyeQ进展The Evolution of EyeQ
  2. delphi保存为html文件,如何在程序中将powerpoint生成html页面。就是和在powerpoint另存为html格式的一样(120分)...
  3. SSM-查询数据库获取下拉框的值并作为查询的筛选条件
  4. 产品经理怎么做可行性分析?
  5. mysql8.0新建用户登录_Mysql8.0 创建远程登陆账户
  6. 如何清空c盘只剩系统_C盘满了怎么办?除了重装系统,还有这些办法!
  7. 重构现有代码:Refactoring
  8. 蓝桥杯 ADV-205 算法提高 拿糖果 java版
  9. 讨论:癌症能被人类攻克吗
  10. 如何在手机上快速制作小一寸证件照
  11. 办理签证用的在职证明中英文版
  12. eNSP华为路由器与交换机连接
  13. Windows 中包括的 USB 设备类驱动程序
  14. CRM上线之路 走上了CRM实施顾问-第100天上班 -第21周
  15. [BZOJ3161]孤舟蓑笠翁
  16. 探秘 VMware Tanzu Kubernetes 发行版
  17. 使用Qt编辑关闭窗口程序的一些见解
  18. windows下tomcat集群配置(两种方法)
  19. 基于RNN的英文姓名的性别预测
  20. switch log

热门文章

  1. 8年互联网老兵,2个月面试20家大厂的知识点总结和建议
  2. Scheme vs Schema
  3. 可穿戴设备未来市场巨大
  4. c语言反汇编工具,PVDasm 反汇编工具
  5. php审批功能的实现代码,PHP实现基于状态的责任链审批模式详解
  6. Linux基本命令学习 《二》
  7. 浅析优化算法与航空公司
  8. opencv-python 特征匹配
  9. 2018网易笔试题-操作序列
  10. 在SINA blog里加背景音乐的三种方法