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

>>> int('')
123

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

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

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

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

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

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

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

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

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

当写成:

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

int2('110011')

执行的结果相当于:

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

当写成:

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

相当于:

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

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

python函数编程-偏函数partial function的更多相关文章

  1. Scala之偏函数Partial Function

    https://blog.csdn.net/bluishglc/article/details/50995939 从使用case语句构造匿名函数谈起在Scala里,我们可以使用case语句来创建一个匿 ...

  2. python的偏函数(partial)

    偏函数就是固定原函数的某个参数,比如newadd就是固定了add方法的第一个参数,让a=3,这样对newadd方法只要传入参数B就可以实现add方法了,刚看偏函数的写法可能会不适应,因为partial ...

  3. python 中偏函数 partial 的使用

    函数的partial应用 函数在执行时,要带上所有必要的参数进行调用.但是,有时参数可以在函数被调用之前提前获知.这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用. 例 ...

  4. python中偏函数的应用

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

  5. Python partial function 偏函数

    Partial function 偏函数是将所要承载的函数作为partial()函数的第一个参数,原函数的各个参数依次作为partial()函数后续的参数,除非使用关键字参数. 当函数的参数个数太多, ...

  6. python中的偏函数partial

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

  7. python进阶(17)偏函数partial

    什么是偏函数partial python中提供一种对于函数固定属性的函数 偏函数的作用 把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数 偏函数的语法 使用偏函数必须先导入from ...

  8. python基础——偏函数

    python基础——偏函数 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函 ...

  9. 【Python】偏函数

    此文转载自廖雪峰. Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的 ...

随机推荐

  1. python3 之 判断字符串是否只为数字(isdigit()方法、isnumeric()方法)

    Isdigit()方法 - 检测字符串是否只由数字组成 语法:   str.isdigit() 参数: 无 返回值: 如果字符串只包含数字,则返回True,否则返回False. 实例: 以下实例展示了 ...

  2. day 23 复习

    本来应该学习day23,由于上午未学习,下去困,导致今天未进行进度 那就做一下简单的复习吧! 1. while else结构,如果while 后的条件条件不再满足 引发循环再继续,则执行else中的内 ...

  3. C#学习笔记02--Bool,关系/逻辑运算符, if/switch语句

    一. Bool类型   逻辑判断, C#中只有true和false两个值; 使用场景: 在分支和循环语句中, 常用作为判断条件来使用;   二. 关系运算符   关系运算符 (> < &g ...

  4. 最全 HTTP 安全响应头设置指南

    销售“安全记分卡”的公司正在崛起,并已开始成为企业销售的一个因素.这些公司组合使用 HTTP 安全报头和 IP 信誉来进行评级.不过,在很大程度上,公司的得分取决于对外开放网站上设置的安全响应报头.本 ...

  5. ETL的两种架构——ETL架构和ELT架构优劣势对比

    ​ 导读: 作为现代企业和组织机构的重要资源,信息是进行科学管理与决策分析的基础.ETL 则是把数据转换为信息.知识的关键步骤之一.在 AI 应用场景下,数据集成有哪些特点?随着 AI 应用场景越来越 ...

  6. 九、Spring Boot 优雅的实现CORS跨域

    前言 我们的springboot 架手架已经包含了mysql,redis,定时任务,邮件服务,短信服务,文件上传下载,以及docker-compose 构建镜像等等. 接下来让我们解决另一个常见的问题 ...

  7. PAT(甲级)2017年秋季考试

    PAT(甲级)2017年秋季考试 D题红黑树待补21/30 大佬的代码,看着想哭,这才是艺术啊 A Cut Integer 模拟题 #include<bits/stdc++.h> usin ...

  8. 转:Java logger组件:slf4j, jcl, jul, log4j, logback, log4j2

    先说结论 建议优先使用logback 或 log4j2.log4j2 不建议和 slf4j 配合使用,因为格式转换会浪费性能. 名词:jcl 和 jul 标题中的 jcl 是 apache Jakar ...

  9. iOS开发经常用到的国外网站,让我们接轨国外的最新技术吧!

    转自:http://www.bubuko.com/infodetail-787949.html 工欲善其事必先利其器,最近发现临时查找一些东西容易浪费时间,花了点时间整理一下常用的网站,方便以后备用. ...

  10. Reachability的使用

    刚到一家新公司 做新项目 关于网络状态的监听和同事产生了不一样的看法 原来我的网络监听都是自己写的 后来发现自己不是一般的傻 有一个叫做Reachability的东西 很简单 很实用 很暴力 下面就是 ...