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 相关文章推荐
Linux下Python获取IP地址的代码
Nov 30 Python
python字符串替换的2种方法
Nov 30 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
python traceback捕获并打印异常的方法
Aug 31 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
python实现AES和RSA加解密的方法
Mar 28 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
python英语单词测试小程序代码实例
Sep 09 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
Django rest framework如何自定义用户表
Jun 09 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 遍历文件实现代码
2011/05/04 PHP
PHP中用hash实现的数组
2011/07/17 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
JS hashMap实例详解
2016/05/26 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
详解用python实现简单的遗传算法
2018/01/02 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
python list元素为tuple时的排序方法
2018/04/18 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
python如何删除文件、目录
2020/06/23 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
numpy实现RNN原理实现
2021/03/02 Python
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
入党申请自荐书范文
2014/02/11 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
单位委托书范本
2014/04/04 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
分析Netty直接内存原理及应用
2021/06/14 Java/Android
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js