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 ...
随机推荐
- ADT-Bundle--Android开发环境快速搭建
http://blog.csdn.net/aizquan/article/details/8974750
- string实现
#include<iostream> using namespace std; class String{ friend ostream& operator<&l ...
- HDU - 3899 JLUCPC(树形dp求距离和)
JLUCPC Dr. Skywind and Dr. Walkoncloud are planning to hold the annual JLU Collegiate Programming Co ...
- 读取静态Json文件
创建web项目: string Json = string.Empty; string filePath = Server.MapPath("/***.json");//根目录下的 ...
- oracle数据库之分组查询(转)
本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1 多表查询2)而在 ...
- codevs 1086 栈(Catalan数)
题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). ...
- pgbouncer的安装和配置
tar -zxvf libevent-2.0.21-stable.tar.gzcd libevent-2.0.21-stable/mkdir /home/pg10/libevent./configur ...
- 《SQL 进阶教程》case :用一条 SQL 语句进行不同条件的统计
进行不同条件的统计是case表达式的著名用法之一 select name,sum(case when sex = 1 then population else 0 end) as cnt_m,sum( ...
- NET Core中使用Dapper操作Oracle存储过程
.NET Core中使用Dapper操作Oracle存储过程最佳实践 为什么说是最佳实践呢?因为在实际开发中踩坑了,而且发现网上大多数文章给出的解决方法都不能很好地解决问题.尤其是在获取类型为Or ...
- openstack安装newton版本dashboard+cinder(六)
一.dashboard 1.安装dashboard及配置 [root@linux-node1 ~]# yum install openstack-dashboard -y #可以装任何地方只要能连接 ...