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利用pyHook实现监听用户鼠标与键盘事件
Aug 21 Python
Python中的条件判断语句与循环语句用法小结
Mar 21 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
May 25 Python
python之Socket网络编程详解
Sep 29 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
Django框架用户注销功能实现方法分析
May 28 Python
新手入门Python编程的8个实用建议
Jul 12 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 Python
Python算法中的时间复杂度问题
Nov 19 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 Python
pandas的resample重采样的使用
Apr 24 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 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实现的函数重载功能示例
2018/08/03 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
PHP 实现缩略图
2021/03/09 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
JQuery实现自定义对话框的代码
2008/06/15 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
js实现进度条的方法
2015/02/13 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
《司马光》教学反思
2016/02/22 职场文书
深入理解go slice结构
2021/09/15 Golang