Python3之偏函数
通过设定参数的默认值,可以降低函数调用的难度。偏函数可以做到这一点
int()函数可以把字符串转换成十进制整数,当传入字符串时,int()默认把字符串为十进制
>>> int('123')
123
但int()函数还提供额外的base参数,默认值为10。如果传入base参数,可以做N进制转换
>>> int('123',base=8)
83
>>> int('123',base=16)
291
>>> int('123',16)
291
PS:base=8把字符串作为8进制转换成10进制,同理16进制 可以省略关键字base直接写8或者16
假设需要转换大量的二进制字符,每次传入int(x,base=2)非常麻烦,可以定义一个int2函数默认把base=2传进去
>>> def int2(x,base=2):
... return int(x,base=2)
...
>>> int2('11')
3
functools.partial就是帮助我们创建一个偏函数,不需要我们自己定义int2(),可以直接使用下面代码创建新的函数int2()
>>> import functools
>>> int2=functools.partial(int,base=2)
>>> int2('11')
3
偏函数functools.partial的作用就是,把一个函数的默写参数固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
上面新的int2函数,仅仅是把base的参数重新设定默认值为2,但也可以在函数调用时传入其他值
>>> int2('11',base=10)
11
创建偏函数时,实际上可以接收函数对象,*args和**kw 3个参数当传入
int2 = functools.partial(int, base=2)
相当于传入是字典
kw={'base':2}
当传入
max2=functools.partial(max,10)
实际上会把10作为*args的一部分自动加到左边
max2(5,6,7)
相当于
max2(10,5,6,7)
结果为10
Python3之偏函数的更多相关文章
- Python3学习(18)--偏函数(Partial) --转载存地址
由于最近出差,没有时间更, 倒不是忙,而是费心,项目其实并不难,主要是涉及钱的地方谈技术略显苍白:没有技术解决不了的问题,但是钱没到位,没人愿意无偿给你提供技术,算是停更一周后的,吐槽吧. 赶上今天 ...
- python3 第二十三章 - 函数式编程之Partial function(偏函数)
要注意,这里的偏函数和数学意义上的偏函数不一样,偏函数是2.5版本以后引进来的东西,属于函数式编程的一部分.前面章节中我们讲到,通过设定参数的默认值,可以降低函数调用的难度.而偏函数也可以做到这一点. ...
- python3偏函数
Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 通过设定参数的默认值,可以降低函数调 ...
- [Python3] 038 函数式编程 偏函数
目录 函数式编程 之 偏函数 1. 关于强制类型转换 int 的补充 2. 利用 int 新建函数 3. functools.partial 函数式编程 之 偏函数 1. 关于强制类型转换 int 的 ...
- 慕课python3.5学习笔记
本文章中有部分代码为python2 慕课python入门 慕课python进阶 布尔值 布尔值可以用and.or和not运算. and运算是与运算,只有所有都为 True,and运算结果才是 True ...
- Python3 与 C# 并发编程之~ 协程篇
3.协程篇¶ 去年微信公众号就陆陆续续发布了,我一直以为博客也汇总同步了,这几天有朋友说一直没找到,遂发现,的确是漏了,所以补上一篇 在线预览:https://github.lesschina.c ...
- Python3 与 C# 扩展之~模块专栏
代码裤子:https://github.com/lotapp/BaseCode/tree/maste 在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode ...
- Python3 与 C# 扩展之~基础衍生
本文适应人群:C# or Python3 基础巩固 代码裤子: https://github.com/lotapp/BaseCode 在线编程: https://mybinder.org/v2/g ...
- Python3 与 C# 扩展之~基础拓展
上次知识回顾:https://www.cnblogs.com/dotnetcrazy/p/9278573.html 代码裤子:https://github.com/lotapp/BaseCode ...
随机推荐
- POJ - 2377 Bad Cowtractors Kru最大生成树
Bad Cowtractors Bessie has been hired to build a cheap internet network among Farmer John's N (2 < ...
- WebView根据加载的内容来控制其高度
一.先设置WebView的高度为0,然后在其加载结束后的代理方法中根据contentSize设置其高度 //初始话一个UIWebView: self.webView = [[[UIWebView al ...
- py-kms使用方法
搭建py-kms服务器,先下载py-kms https://github.com/myanaloglife/py-kms 启动py-kms服务(需要服务器安装有python): python serv ...
- 在 WinForm/WPF 下制作 Google Material Design 风格程序
国内社区没有,顺手转.WinForm: https://github.com/IgnaceMaes/MaterialSkin演示:https://www.youtube.com/watch?v=A8o ...
- 成为高手前必懂的TCP干货
目录 一.起源 二.TCP 协议 TCP 的特点? 怎么理解全双工? TCP 的数据包如何组织? 三.TCP 工作流程 四. 三次握手 五. 四次挥手 小结 我们在平时的开发过程中,或多或少都会涉猎到 ...
- E20190418-hm
distinct adj. 明显的,清楚的; 卓越的,不寻常的; 有区别的; 确切的; predicate vt. 断言,断定; 宣布,宣讲; 使基于; n. 谓语; 述语;
- ue4-C++中加载一个蓝图类(二)-C++中绑定Blueprint武器
editor中编辑好一个武器蓝图资源后,c++中create出这个武器,然后attach到一个人物身上. 思路: 写个c++基类,蓝图继承后编辑成武器或其他装备,然后c++用一个TSubclassO ...
- 遍历问题 codevs
1029 遍历问题 1029 遍历问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 我们都很熟悉二叉树的前序.中序. ...
- JS高级学习历程-4
4 执行环境可以访问什么变量 具体可以访问变量类型:局部变量.参数.函数.外部环境变量 优先级:局部变量 > 函数 > 参数 > 外部环境变量 <!DOCTYPE html&g ...
- 【考试记录】Educational Codeforces Round 59 (Rated for Div. 2)
本来准备划水,结果被垃圾题艹翻了…… T2题意: 定义一个数$x$的数字根$S(x)$为:将其各位数字相加得到一个新数,再将新数的数字和相加直到得到一个个位数,就是该数的数字根. 例如:$S(38)= ...