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 相关文章推荐
python3使用urllib模块制作网络爬虫
Apr 08 Python
python查看微信好友是否删除自己
Dec 19 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
解读python logging模块的使用方法
Apr 17 Python
Python堆排序原理与实现方法详解
May 11 Python
简单了解Django ContentType内置组件
Jul 23 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Python列表倒序输出及其效率详解
Mar 04 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 Python
Python 多线程之threading 模块的使用
Apr 14 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
PHP4.04简明安装
2006/10/09 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
js实现随机8位验证码
2020/07/24 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
python去掉字符串中重复字符的方法
2014/02/27 Python
python设计模式大全
2016/06/27 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
Python实现TCP通信的示例代码
2019/09/09 Python
学生周末回家住宿长期请假条
2014/02/15 职场文书
社会实践活动总结报告
2014/04/29 职场文书
激励口号大全
2014/06/17 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
同事打架检讨书
2015/05/06 职场文书
亲情作文之母爱
2019/09/25 职场文书
Django使用echarts进行可视化展示的实践
2021/06/10 Python
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python