Python偏函数Partial function使用方法实例详解


Posted in Python onJune 17, 2020

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。

要注意,这里的偏函数和数学意义上的偏函数不一样。

在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:

int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:

int('12345')
12345

但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:

int('12345', base=8)
5349

int('12345', 16)
74565

假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:

def int2(x, base=2):
return int(x, base)

这样,我们转换二进制就非常方便了:

int2('1000000')
64
int2('1010101')
85

functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:

import functools
int2 = functools.partial(int, base=2)
int2('1000000')
64
int2('1010101')
85

所以,简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

注意到上面的新的int2函数,仅仅是把base参数重新设定默认值为2,但也可以在函数调用时传入其他值:

int2('1000000', base=10)
1000000

最后,创建偏函数时,实际上可以接收函数对象、*args和**kw这3个参数,当传入:

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

实际上固定了int()函数的关键字参数base,也就是:

int2('10010')

相当于:

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

当传入:

max2 = functools.partial(max, 10)

实际上会把10作为*args的一部分自动加到左边,也就是:

max2(5, 6, 7)

相当于:

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

结果为10。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python break语句详解
Mar 11 Python
Python open()文件处理使用介绍
Nov 30 Python
Python的Django框架中的表单处理示例
Jul 17 Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
Python单链表简单实现代码
Apr 27 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python模块搜索路径代码详解
Jan 29 Python
python pygame模块编写飞机大战
Nov 20 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
5分钟 Pipenv 上手指南
Dec 20 Python
python中比较两个列表的实例方法
Jul 04 Python
详解Python IO口多路复用
Jun 17 #Python
基于keras中的回调函数用法说明
Jun 17 #Python
Python学习之路安装pycharm的教程详解
Jun 17 #Python
Python闭包及装饰器运行原理解析
Jun 17 #Python
浅谈Python协程
Jun 17 #Python
使用K.function()调试keras操作
Jun 17 #Python
哪些是python中web开发框架
Jun 17 #Python
You might like
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
orm获取关联表里的属性值
2016/04/17 PHP
jquery $.ajax相关用法分享
2012/03/16 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
vue-hook-form使用详解
2017/04/07 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
python用post访问restful服务接口的方法
2018/12/07 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python:slice与indices的用法
2019/11/25 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
python绘制动态曲线教程
2020/02/24 Python
Python类型转换的魔术方法详解
2020/12/23 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
专升本个人自我评价
2013/12/22 职场文书
项目建议书范文
2014/05/12 职场文书
林肯就职演讲稿
2014/05/19 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
导游词之广州陈家祠
2019/10/21 职场文书