不用代碼片了,直接敲代碼:
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),然后去調用即可。
對於有很多可調用對象,並且許多調用都反復使用相同參數的情況,使用偏函數比較合適。
