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解释执行原理分析
Aug 22 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
python pymysql库的常用操作
Oct 16 Python
python使用ctypes库调用DLL动态链接库
Oct 22 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 Python
Python使用永中文档转换服务
May 06 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
JS常用正则表达式总结
2013/11/12 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
JavaScript知识点整理
2015/12/09 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
javascript实现简单页面倒计时
2021/03/02 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
python数据结构之二叉树的建立实例
2014/04/29 Python
Python fileinput模块使用实例
2015/06/03 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
英文简历中的自我评价
2013/10/06 职场文书
自荐书模板
2013/12/15 职场文书
2014年工程师工作总结
2014/11/25 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
庐山导游词
2015/02/03 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技