Python3 Note(No.4)

高階函數:一個函數就接收另一個函數作爲參數

求絕對值的函數abs(); 

map()函數接收兩個參數,一個是函數,一個是Iterablemap將傳入的函數依次作用到序列的每個元素,並把結果作爲新的Iterator返回

>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

 

reduce()把一個函數作用在一個序列[x1, x2, x3, ...]上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素做累積計算, 

filter()函數用於過濾序列,接收一個“篩選”函數和一個序列,把傳入的函數依次作用於每個元素,然後根據返回值是True還是False決定保留還是丟棄該元素。  

sorted()函數就可以對list進行排序,還可以接收一個key函數來實現自定義的排序,例如按絕對值大小排序:

>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

要進行反向排序,不必改動key函數,可以傳入第三個參數reverse=True 

 

關鍵字lambda表示匿名函數,冒號前面的x表示函數參數。

匿名函數有個限制,就是只能有一個表達式,不用寫return,返回值就是該表達式的結果。

>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]

 

代碼運行期間動態增加功能的方式,稱之爲“裝飾器”(Decorator),要藉助Python的@語法,把decorator置於函數的定義處  

 但int()函數提供額外的base參數,默認值爲10。如果傳入base參數,就可以做N進制的轉換

functools.partial就是幫助我們創建一個偏函數的,functools.partial的作用就是,把一個函數的某些參數給固定住(也就是設置默認值),返回一個新的函數,調用這個新函數會更簡單。

import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章