python函数编程-偏函数partial function

一般的,通过设定函数参数的默认值,可以减低函数调用的难度。比如:int()函数可以把字符串转换成整数:

>>> int('123')
123

事实上,int()函数还提供额外的base参数,表示进制,只是默认值是10而已:

>>> int('123',base=16)
291
>>> int('123',16)
291

现在,如果我们需要转换大量的二进制字符串,每次都调用int(x,base=2)显得比较麻烦。这时我们可以尝试封装函数int(x,base=2)成为int2(x),而int2(x)相当于:

>>> def int2(x,base=2):
...     return int(x,base)
...
>>> int2('1000111')
71

在python的functools模块中就内置了partial函数,用于把函数的某些参数固定住(也就是设置默认值),最后返回一个新函数。这就是偏函数(和数学中的偏函数的意义不同)。上述例子可以使用偏函数改写为:

>>> import functools
>>> int2 = functools.partial(int,base=2)
>>> int2('110011')
51

其实,上面新的int2函数,仅仅是把base参数的默认值由原来的10变为2。我们还是可以在函数调用的时候传入其他的值:

>>> int2('110011',base = 10)
110011

创建偏函数的时候,可以接收3种类型的参数:函数、*args、**kw:

当写成:

 int2 = functools.partial(int,base=2)

int2('110011')

执行的结果相当于:

kw = { 'base': 2 }
int('10010', **kw)

当写成:

>>> max2 = functools.partial(max,5)
>>> max2(3,6)
6

相当于:

args = (10, 5, 6, 7)
max(*args)

可见,如果一个函数的参数个数太多,需要简化的时候,使用functools.partial函数,可以创建一个函数,这个新函数可以将原函数的部分参数初始化(即赋默认值),调用的时候更简单

posted on 2017-12-28 23:45 风雨一肩挑 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/hiwuchong/p/8138386.html

python函数编程-偏函数partial function相关推荐

  1. JavaScript函数式编程之偏函数(Partial Function)

    之前的博客有介绍JavaScript函数式编程的curry化,今天就介绍一个跟curry化有点像的偏函数(partial function) 先介绍一下什么叫偏函数,其实指的是将给定的函数的部分参数固 ...

  2. Scala之偏函数Partial Function

    文章目录 从使用case语句构造匿名函数谈起 使用case语句构造匿名函数的"额外"好处 正式认识偏函数Partial Function Case语句是如何被编译成偏函数的 为什么 ...

  3. python学习 -偏函数

    一.什么是偏函数? (1)在Python的functools模块众多的功能中,其中有一个就是偏函数,我们称之为 partial function 模块的概念我们下一篇在细讲. (2)我们都听过偏将军吧 ...

  4. python中偏函数的应用

    一.什么是偏函数? (1)在Python的functools模块众多的功能中,其中有一个就是偏函数,我们称之为 partial function 模块的概念我们下一篇在细讲. (2)我们都听过偏将军吧 ...

  5. 【Python函数式编程】——偏函数(Partial function)

    Python函数式编程--偏函数   Python的 functools 模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一 ...

  6. 偏函数(Partial Function)

    Scala中的Partial Function就是一个"残缺"的函数,就像一个严重偏科的学生,只对某些科目感兴趣,而对没有兴趣的内容弃若蔽履.Partial Function做不到 ...

  7. Python中的partial便函数的理解

    偏函数(Partial function)是通过将一个函数的部分参数预先绑定为某些值,从而得到一个新的具有较少可变参数的函数.在Python中,可以通过functools中的partial高阶函数来实 ...

  8. python的偏函数

    Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我们讲到,通过 ...

  9. Python 中的闭包、匿名函数、decorator 装饰器与python的偏函数

    Python中的闭包 def calc_sum(lst):def lazy_sum():return sum(lst)return lazy_sum 像这种内层函数引用了外层函数的变量(参数也算变量) ...

最新文章

  1. 梯度下降法 —— 经典的优化方法
  2. Python递归实现快速排序
  3. 嵌入式开发之davinci--- 8168 电源调试总结
  4. php读取数组修改内容,php 数组如何修改值
  5. js 获取最后一个字符
  6. 基于ubuntu18.04使用 Azure Kinect 传感器 SDK 录制
  7. R语言实现混频数据分析
  8. SQL将A表的现有数据添加到B表,通过A表现有数据更新B表
  9. 如何在mysql navicat 设置datetime类型的默认事件值
  10. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例32
  11. redis 菜鸟教程中脚本笔记
  12. Python 地图行政区边界方案
  13. 一起来做个CH347的项目(应用于FPGA、CPLD、MCU)
  14. 【数据挖掘】K-Means 一维数据聚类分析示例
  15. forward(转发)与redirect(重定向)的区别
  16. IOS7使用吐槽(抛弃拟物化您还能走多远.........)
  17. 当Excel遇到在线表格,看如何轻松解决办公难题 ?
  18. Android APK 反编译浅入浅出:apktool 、dex2jar 、jd-gui
  19. android app内部打开word pdf .doc类型文件的两种方式
  20. 如何高效阅读英文文献,这些技巧你学会了吗?

热门文章

  1. ionic ajax 跨域,解决 ionic 中的 CORS(跨域) 问题
  2. html 弹出遮罩 iframe,iframe正在加载时显示遮罩层 加载完毕后显示iframe
  3. Windows CE 6.0 安装顺序
  4. System.Diagnostics.Process启动Civil 3D及AutoCAD
  5. 理解大型分布式网站你应该知道这些概念
  6. break、continue和return的使用
  7. 自动化发布-GitLab WEB Hooks 配置
  8. Configuring the Java Virtual Manager (JVM)
  9. 昆仑网(D×××)去中心化虚拟互联网基础功能图片式介绍,请全屏看。
  10. 明星软件工程师的十种特质