python偏函数的运用
摘要: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偏函数
偏函数 一个带n 个参数,curried 的函数固化第一个参数为固定参数,并返回另一个带n-1 个参数函数对象 >>> from functools import partial & ...
- python 偏函数
functools.partial可以设置默认参数和关键字参数的默认值 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的 ...
- Python偏函数实例
目标: 1.编写一个gui,生成按钮 2.通过偏函数,生成按钮 3.通过装饰器,实现按钮输出信息功能 1.使用Tkinter,创建一个按钮 代码如下: handetiandeMacBook-Pro:~ ...
- python偏函数使用
偏函数依托于python functools模块.
- Python 偏函数用法全方位解析
Python的functools模块中有一种函数叫“偏函数”,自从接触它以来,发现确实是一个很有用且简单的函数,相信你看完这篇文章,你也有相见恨晚的感觉. 我们都知道,函数入参可以设置默认值来简化函数 ...
- python偏函数(functool.partail)
functool.partail 方法可以为一个函数生成偏函数 import functools def f(a,b,c,d): print a,b,c,d a='a' b='b' f1=functo ...
- 4.1 python类的特殊成员,偏函数,线程安全,栈,flask上下文
目录 一. Python 类的特殊成员(部分) 二. Python偏函数 1. 描述 2. 实例一: 取余函数 3. 实例二: 求三个数的和 三. 线程安全 1. 实例一: 无线程,消耗时间过长 2. ...
- [Python]闭包的理解和使用
闭包广泛使用在函数式编程语言中,虽然不是很容易理解,但是又不得不理解. 闭包是什么? 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包.闭包可以 ...
- Python 之匿名函数和偏函数
匿名函数与偏函数 匿名函数 Python允许使用lambda关键字创造匿名函数,lambda表达式用于定义匿名函数,它返回可调用的函数对象,语法如下: lambda arg1, arg2, … : e ...
随机推荐
- Android 混淆代码有关问题总结
Android 混淆代码问题总结 Android 混淆代码: 最快的方式: 1. 首先更新Android的SDK至最新版本,重新建立1个工程,把源码和资源及其他文件拷到新的工程里面. 2. 工程目录底 ...
- 代码记录——phase16,block36
36*36 -2,-2扩展 代码有问题,有时能运行有时报错. HRESULT RotateZoom(PBYTE pbSrc,int iWidth,int iHeight,double dbRotate ...
- 使用Eclipse构建Maven项目
http://blog.csdn.net/qjyong/article/details/9098213
- 第六种方式,python使用cached_property缓存装饰器和自定义cached_class_property装饰器,动态添加类属性(三),selnium webdriver类无限实例化控制成单浏览器。
使用 from lazy_object_proxy.utils import cached_property,使用这个装饰器. 由于官方的行数比较少,所以可以直接复制出来用自己的. class cac ...
- Javascript生成GUID算法
var GUID = { date: new Date(), /* 生成GUID码 */ newGUID: function () { this.date = new Date(); var guid ...
- ios开发之--MJRefresh的简单使用
MJRefresh是MJ大神写的框架,很强大,好多外国开发者都在用! 具体方法如下: -(void)requestData { NSString *userIdStr = [NSString stri ...
- python运行显示编码错误
python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...
- CreateProcess函数详解
在windows程序设计五中有详解 CreateProcess 说明: WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件. 函数原型: B ...
- Ubuntu图形界面和字符界面转换、指定默认启动界面
1.按ALT+CTRL+F1.F2.F3.F4.F5.F6.F7可来回切换7个界面(Linux实体机) 其中ALT+CTRL+F7可切换到图形界面(Linux实体机) 如果是V ...
- INSTALL_FAILED_USER_RESTRICTED
我这里出问的问题是在 清单文件中 <provider <mate_data 中少了 android:resource="@xml/filepaths" 加上就好 了