不用代码片了,直接敲代码:
from functools import partial as pto
MyButton = pto(Button,top)
CritButton = pto(MyButton,command = critCB, bg = 'white', fg= 'red')
WarnButton = pto(MyButton,command = warnCB, bg = 'goldenrodl')
以上代码出现在GUI编程中的一部分,看到之后不不明白。不知道什么意思,
看了注释才知道,原来是偏函数。膜拜了!
介绍一下偏函数:偏函数是2.5版本以后引进来的东西。属于函数式编程的一部分,使用偏函数可以通过有效地“冻结”那些预先确定的参数,来缓存函数参数,然后在运行时,当获得需要的剩余参数后,可以将他们解冻,传递到最终的参数中,从而使用最终确定的所有参数去调用函数。
看了一个比较容易理解的例子:
def add(a,b):
return a+b;
add(3,5)
add(4,7)
以上两个是我们正常调用,那么如果我们知道一个已知的参数a= 100,我们如何利用偏函数呢?
import functools import partial as pto
puls = pto(add,100)
result = puls(9)
result的结果就是109。
在这里偏函数表达的意思就是,在函数add的调用时,我们已经知道了其中的一个参数,我们可以通过这个参数,重新绑定一个函数,就是pto(add,100),然后去调用即可。
对于有很多可调用对象,并且许多调用都反复使用相同参数的情况,使用偏函数比较合适。