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实现对比不同字体中的同一字符的显示效果
Apr 23 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
Python的Django REST框架中的序列化及请求和返回
Apr 11 Python
Python脚本实现虾米网签到功能
Apr 12 Python
python读取oracle函数返回值
Jul 18 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
Python for循环中的陷阱详解
Jul 13 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
Jan 03 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
Python爬虫之爬取淘女郎照片示例详解
Jul 28 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
JavaScript中获取元素索引的函数
2010/09/10 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
深入探讨前端框架react
2015/12/09 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
在python中的socket模块使用代理实例
2014/05/29 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
静态成员和非静态成员的区别
2012/05/12 面试题
GWebs公司笔试题
2012/05/04 面试题
公务员中国梦演讲稿
2014/08/19 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技