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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
python获取list下标及其值的简单方法
Sep 12 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
Python Numpy库常见用法入门教程
Jan 16 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
Python控制台实现交互式环境执行
Jun 09 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
解析isset与is_null的区别
2013/08/09 PHP
php截取字符串函数分享
2015/02/02 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
JavaScript 调试器简介
2009/02/21 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
js闭包的用途详解
2014/11/09 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
javascript 动态修改css样式方法汇总(四种方法)
2015/08/27 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
django框架使用方法详解
2019/07/18 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
浅析python 字典嵌套
2020/09/29 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
如何撰写岗位职责
2014/02/01 职场文书
白酒市场营销方案
2014/02/25 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
四风自我剖析材料
2014/09/30 职场文书
党员个人党性分析材料
2014/12/18 职场文书