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轻松实现代码编码格式转换
Mar 26 Python
从Python的源码浅要剖析Python的内存管理
Apr 16 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
详解Python中的array数组模块相关使用
Jul 05 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
python3.5基于TCP实现文件传输
Mar 20 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python基于scipy实现信号滤波功能
May 08 Python
python list转置和前后反转的例子
Aug 26 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
pycharm修改file type方式
Nov 19 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
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
php+mysql事务rollback&commit示例
2010/02/08 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
php中Snoopy类用法实例
2015/06/19 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
python中def是做什么的
2020/06/10 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
成人大专生实习期的自我评价
2013/10/02 职场文书
现代化办公人员工作的自我评价
2013/10/16 职场文书
葡萄牙语专业个人求职信
2013/12/10 职场文书
机电一体化职业规划书
2014/01/07 职场文书
小学教师管理制度
2014/01/18 职场文书
银行求职自荐信
2014/06/30 职场文书
戒赌保证书
2015/05/11 职场文书
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL
教你部署vue项目到docker
2022/04/05 Vue.js
Linux中sftp常用命令整理
2022/06/28 Servers