盡管Python并不是以函數(shù)式為主的語言,但對它來說支持函數(shù)式編程也相對比較容易,因?yàn)?strong>Python中的一切都是對象。這意味著函數(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)。這一概念的另一個術(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)用對象作為參數(shù)的函數(shù)。“可調(diào)用對象”是任何能夠通過括號調(diào)用的東西,具體來說有類、函數(shù)和方法。其中最常見的用法就是在對數(shù)據(jù)結(jié)構(gòu)進(jìn)行排序時,通過參數(shù)的鍵指定排序的相對順序。
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)在于它不會在棧跟蹤中顯示名稱,可能會給調(diào)試帶來麻煩。
以上內(nèi)容為大家介紹了Python的函數(shù)式,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/