Python偏函数实现原理及应用


Posted in Python onNovember 20, 2020

摘要:python的设计核心原则就是简洁——在这种原则的指导下,诞生了lambda表达式和偏函数:二者都让函数调用变得简洁。本文主要为你介绍偏函数的应用。

1.为什么要使用偏函数

如果我们定义了一个函数,比如说将四个数相加add(one ,two,three,four),上层有很多函数需要调用这个函数。在这些调用中,80%的调用传递的参数都是one=1,two=20,如果我们每都输入相同的参数,这样乏味而且浪费,固然,我们可以通过默认参数来解决这个问题;但是如果另外我们也需要参数是one=2,two=10的情况呢?所以,我们需要一种函数,能够将任意数量的参数的函数转化成带剩余参数的函数对象。

2.什么是偏函数

通过上面,我们大概明白了什么是偏函数:简单的说,偏函数就是某一种函数带有固定参数的实现,所以,我们需要:

1)给偏函数命名

2)传递固定参数

看下面这个例子:

from operator import add,mul
from functools import partial
add1=partial(add,1)
add(2,4) #6
add(1,2) #3

3.如何使用偏函数

可能你还没有感受到偏函数的巨大威力,这里举出一个常见的应用场景。在GUI程序中,一个控件往往有很多参数:大小、长度、最大尺寸、前景色、背景色等;而我们大量用到同种控件,此时,偏函数就非常有用了。下面给出一个GUI应用的例子和结果:

root=Tkinter.Tk()
mybutton=partial(Tkinter.Button,root,fg='white',bg='blue')
b1=mybutton(text='Button1')
b2=mybutton(text='Button2')
qb=mybutton(text='QUIT',bg='red',command=root.quit)
b1.pack()
b2.pack()
qb.pack(fill=Tkinter.X,expand=True)
root.title('PAF!')
root.mainloop()

Python偏函数实现原理及应用

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

Python 相关文章推荐
Python实现把json格式转换成文本或sql文件
Jul 10 Python
用python处理图片实现图像中的像素访问
May 04 Python
python format 格式化输出方法
Jul 16 Python
学生信息管理系统Python面向对象版
Jan 30 Python
20行python代码实现人脸识别
May 05 Python
在python中用print()输出多个格式化参数的方法
Jul 16 Python
python创建学生成绩管理系统
Nov 22 Python
Python 自由定制表格的实现示例
Mar 20 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 Python
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
May 24 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 Python
python与idea的集成的实现
Nov 20 #Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 #Python
python3 re返回形式总结
Nov 20 #Python
python 实现图片修复(可用于去水印)
Nov 19 #Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 #Python
Python并发爬虫常用实现方法解析
Nov 19 #Python
python实现文件分片上传的接口自动化
Nov 19 #Python
You might like
PHP 动态随机生成验证码类代码
2010/04/09 PHP
checkbox使用示例
2013/08/23 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
Python群发邮件实例代码
2014/01/03 Python
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
python实现解数独程序代码
2017/04/12 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
Python编写打字训练小程序
2019/09/26 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
python从PDF中提取数据的示例
2020/10/30 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
重点工程汇报材料
2014/08/27 职场文书
迎国庆演讲稿
2014/09/05 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
python中pycryto实现数据加密
2022/04/29 Python