盡管Python并不是以函數(shù)式為主的語言,但對(duì)它來說支持函數(shù)式編程也相對(duì)比較容易,因?yàn)?strong>Python中的一切都是對(duì)象。這意味著函數(shù)定義也可以賦給變量并傳遞。
defadd(a,b):
returna+b
plus=add
plus(3,4)#returns7
Lambda
通過Lambda表達(dá)式的語法,可以用聲明式的方式創(chuàng)建函數(shù)。關(guān)鍵字lambda來自希臘字母,經(jīng)常在正式的數(shù)學(xué)邏輯中用來描述函數(shù)和變量的虛擬綁定,即“l(fā)ambda演算”,它的歷史比函數(shù)式編程還要久遠(yuǎn)。這一概念的另一個(gè)術(shù)語叫做“匿名函數(shù)”,因?yàn)閘ambda函數(shù)可以直接嵌入到行內(nèi)使用,不需要事先指定名稱。將匿名函數(shù)賦值給變量后,它的行為與正常函數(shù)完全一樣。
(lambdaa,b:a+b)(3,4)#returns7
addition=lambdaa,b:a+b
addition(3,4)#returns7
lambda函數(shù)最常見的用法就是提供給那些接受可調(diào)用對(duì)象作為參數(shù)的函數(shù)。“可調(diào)用對(duì)象”是任何能夠通過括號(hào)調(diào)用的東西,具體來說有類、函數(shù)和方法。其中最常見的用法就是在對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行排序時(shí),通過參數(shù)的鍵指定排序的相對(duì)順序。
authors=['OctaviaButler','IsaacAsimov','NealStephenson','MargaretAtwood','UsulaKLeGuin','RayBradbury']
sorted(authors,key=len)#Returnslistorderedbylengthofauthorname
sorted(authors,key=lambdaname:name.split()[-1])#Returnslistorderedalphabeticallybylastname.
行內(nèi)嵌入式lambda函數(shù)的缺點(diǎn)在于它不會(huì)在棧跟蹤中顯示名稱,可能會(huì)給調(diào)試帶來麻煩。
以上內(nèi)容為大家介紹了Python的函數(shù)式,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.parentadvocate.org/