高階函數:一個函數就接收另一個函數作爲參數
求絕對值的函數
abs();
map()
函數接收兩個參數,一個是函數,一個是Iterable
,map
將傳入的函數依次作用到序列的每個元素,並把結果作爲新的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