python函数编程-偏函数partial function
一般的,通过设定函数参数的默认值,可以减低函数调用的难度。比如: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的更多相关文章
- Scala之偏函数Partial Function
https://blog.csdn.net/bluishglc/article/details/50995939 从使用case语句构造匿名函数谈起在Scala里,我们可以使用case语句来创建一个匿 ...
- python的偏函数(partial)
偏函数就是固定原函数的某个参数,比如newadd就是固定了add方法的第一个参数,让a=3,这样对newadd方法只要传入参数B就可以实现add方法了,刚看偏函数的写法可能会不适应,因为partial ...
- python 中偏函数 partial 的使用
函数的partial应用 函数在执行时,要带上所有必要的参数进行调用.但是,有时参数可以在函数被调用之前提前获知.这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用. 例 ...
- python中偏函数的应用
一.什么是偏函数? (1)在Python的functools模块众多的功能中,其中有一个就是偏函数,我们称之为 partial function 模块的概念我们下一篇在细讲. (2)我们都听过偏将军吧 ...
- Python partial function 偏函数
Partial function 偏函数是将所要承载的函数作为partial()函数的第一个参数,原函数的各个参数依次作为partial()函数后续的参数,除非使用关键字参数. 当函数的参数个数太多, ...
- python中的偏函数partial
Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我们讲到,通过 ...
- python进阶(17)偏函数partial
什么是偏函数partial python中提供一种对于函数固定属性的函数 偏函数的作用 把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数 偏函数的语法 使用偏函数必须先导入from ...
- python基础——偏函数
python基础——偏函数 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函 ...
- 【Python】偏函数
此文转载自廖雪峰. Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的 ...
随机推荐
- STDN: Scale-Transferrable Object Detection论文总结
概述 STDN是收录于CVPR 2018的一篇目标检测论文,提出STDN网络用于提升多尺度目标的检测效果.要点包括:(1)使用DenseNet-169作为基础网络提取特征:(2)提出Scale-tra ...
- 【JavaEE】之MyBatis逆向工程的使用
MyBatis逆向工程可以方便的从数据库中将表自动映射到JAVA POJO类,并同时生成Mapper.xml和Mapper接口,方便实用.下面介绍一下逆向工程的使用方法. 使用逆向工程,我们最好是新建 ...
- 使用Feign访问接口
添加主要依赖 使用Feign访问接口的配置,如果服务不在Eureka上,可以不加Eureka的依赖,用在FeignClient上指定url的方式访问 dependencies { compile(' ...
- Web安全测试实战之测试HTTP方法
一. Http方法测试 有些Web服务器默认情况下开放了一些不必要的HTTP方法(如DELETE.PUT.TRACE.MOVE.COPY),这样就增加了受攻击面. 测试方法: 1.打开webscara ...
- SpringBoot-配置文件相关(五)
SpringBoot-配置文件 SpringBoot官方文档 配置相关 SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的 application.properties 语法结构 : ...
- luogu P5171 Earthquake
题目描述 给定 a,b,c ,求满足方程 ax+by⩽c 的非负整数解个数. 输入格式 输入三个整数 a,,b,,c . 输出格式 输出一个整数表示答案. 类欧几里得算法 #include<cs ...
- luogu P4408 [NOI2003]逃学的小孩
题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?"一听说要考试,Chris的父母就心 ...
- 17.Django学习之django自带的contentType表
通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/aaronthon/article/details/81714496 ...
- .NETCore 访问国产达梦数据库
前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...
- iOS导出远程推送所需要的P12 或pem文件
http://www.saitjr.com/ios/ios-export-remote-notification-p12-pem-file.html iOS导出远程推送所需要的P12 或pem文件 h ...