函數(shù)
回顧一下函數(shù),函數(shù)就是把固定的邏輯放在一起,方便我們下次使用,不用寫重復(fù)的代碼,提升代碼的復(fù)用性以及可讀性;一個(gè)好的函數(shù),可以只通過(guò)函數(shù)名就可以看懂這個(gè)過(guò)程要做什么,所以當(dāng)我們有很大一段邏輯代碼的時(shí)候,拆成不同的函數(shù),可以大大的提高代碼易讀性。
函數(shù)式編程
函數(shù)式編程,這里多了一個(gè)“式”,雖然也可以歸結(jié)到面向過(guò)程的程序設(shè)計(jì),但其思想更接近數(shù)學(xué)計(jì)算。函數(shù)式編程的一個(gè)特點(diǎn)就是,允許把函數(shù)本身作為參數(shù)傳入另一個(gè)函數(shù),還允許返回一個(gè)函數(shù)!
Python對(duì)函數(shù)式編程提供部分支持。由于Python允許使用變量,因此,Python不是純函數(shù)式編程語(yǔ)言。
函數(shù)作為參數(shù)
Python內(nèi)建的filter()函數(shù)用于過(guò)濾序列。 filter()函數(shù)接收一個(gè)函數(shù)和一個(gè)序列作為參數(shù),filter()把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 結(jié)果: [1, 5, 9, 15]
把一個(gè)序列中的空字符串刪除的寫法:
def not_empty(s):
return s and s.strip()
list(filter(not_empty, ['A', '', 'B', None, 'C', ' ']))
# 結(jié)果: ['A', 'B', 'C']
可見filter的用法突出一個(gè)“篩選”注意到filter()函數(shù)返回的是一個(gè)Iterator,也就是一個(gè)惰性序列,所以要強(qiáng)迫f(wàn)ilter()完成計(jì)算結(jié)果,需要用list()函數(shù)獲得所有結(jié)果并返回list。
-
編程
+關(guān)注
關(guān)注
88文章
3689瀏覽量
95269 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64898 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86769
發(fā)布評(píng)論請(qǐng)先 登錄
Golang函數(shù)式編程簡(jiǎn)述
前端開發(fā)之函數(shù)式編程實(shí)踐

函數(shù)式編程的基本特性
從函數(shù)式編程,性能,測(cè)試,編碼規(guī)范談Python
Python函數(shù)使用基礎(chǔ)教程
函數(shù)式編程語(yǔ)言、編程和程序驗(yàn)證
Python的函數(shù)文件與模塊的程序說(shuō)明

評(píng)論