Python偏函數(shù)實(shí)現(xiàn)原理及應(yīng)用
摘要:python的設(shè)計(jì)核心原則就是簡(jiǎn)潔——在這種原則的指導(dǎo)下,誕生了lambda表達(dá)式和偏函數(shù):二者都讓函數(shù)調(diào)用變得簡(jiǎn)潔。本文主要為你介紹偏函數(shù)的應(yīng)用。
1.為什么要使用偏函數(shù)
如果我們定義了一個(gè)函數(shù),比如說(shuō)將四個(gè)數(shù)相加add(one ,two,three,four),上層有很多函數(shù)需要調(diào)用這個(gè)函數(shù)。在這些調(diào)用中,80%的調(diào)用傳遞的參數(shù)都是one=1,two=20,如果我們每都輸入相同的參數(shù),這樣乏味而且浪費(fèi),固然,我們可以通過(guò)默認(rèn)參數(shù)來(lái)解決這個(gè)問(wèn)題;但是如果另外我們也需要參數(shù)是one=2,two=10的情況呢?所以,我們需要一種函數(shù),能夠?qū)⑷我鈹?shù)量的參數(shù)的函數(shù)轉(zhuǎn)化成帶剩余參數(shù)的函數(shù)對(duì)象。
2.什么是偏函數(shù)
通過(guò)上面,我們大概明白了什么是偏函數(shù):簡(jiǎn)單的說(shuō),偏函數(shù)就是某一種函數(shù)帶有固定參數(shù)的實(shí)現(xiàn),所以,我們需要:
1)給偏函數(shù)命名
2)傳遞固定參數(shù)
看下面這個(gè)例子:
from operator import add,mulfrom functools import partialadd1=partial(add,1)add(2,4) #6add(1,2) #3
3.如何使用偏函數(shù)
可能你還沒(méi)有感受到偏函數(shù)的巨大威力,這里舉出一個(gè)常見(jiàn)的應(yīng)用場(chǎng)景。在GUI程序中,一個(gè)控件往往有很多參數(shù):大小、長(zhǎng)度、最大尺寸、前景色、背景色等;而我們大量用到同種控件,此時(shí),偏函數(shù)就非常有用了。下面給出一個(gè)GUI應(yīng)用的例子和結(jié)果:
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()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)車輛管理系統(tǒng)2. 如何使用ASP.NET Core 配置文件3. uni-app結(jié)合.NET 7實(shí)現(xiàn)微信小程序訂閱消息推送4. jscript與vbscript 操作XML元素屬性的代碼5. php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)6. .NET中實(shí)現(xiàn)對(duì)象數(shù)據(jù)映射示例詳解7. ASP.NET MVC使用Boostrap實(shí)現(xiàn)產(chǎn)品展示、查詢、排序、分頁(yè)8. ASP.NET Core 7 Razor Pages項(xiàng)目發(fā)布到IIS的詳細(xì)過(guò)程9. XML在語(yǔ)音合成中的應(yīng)用10. asp.net core 認(rèn)證和授權(quán)實(shí)例詳解
