[2015-08-07] python018

匿名函數lambda

lambda args:expression

f1 = lambda x,y : x+y 

args:以逗號分隔的參數列表
expression:用到args中各參數的表達式
  • lambda語句定義的代碼必須是合法的表達式,不能出現多條件語句(可使用if的三元表達式)和其他非表達式語句,如for和while等
  • lamda的首要用途是指定短小的回調函數
  • lambda將返回一個函數而不是將函數賦值給某變量名
  • 注意:
    lambda是一個表達式而非語句
    lambda是一個單個表達式,而不是一個代碼塊
  • def語句創建的函數將賦值給某變量名,而lambda表達式則直接返回函數
  • lambda也支持使用默認參數

  • lambda

Python函數式編程

函數式編程:

  • 也稱作泛函編程,是一種編程規範
  • 它將電腦運算視爲數學上的函數計算,並且避免狀態以及可變數據
  • 函數式編程語言最重要的基礎是lambda演算,而且lambda演算的函數可以接受函數當作輸入和輸出

Python支持有限的函數式編程功能:

過濾器 filter(func,seq)

  • filter()爲已知的序列的每個元素調用給定的布爾函數
  • 調用中,返回值爲非零值的元素將被添加至一個列表中

映射器 map(func,seq1[,seq2…])

  • map()將函數調用“映射”到每個序列的對應元素上並返回一個含有所有返回值的列表

摺疊 reduce(func,seq[,init])

  • 將二元函數作用域seq序列的元素,每次攜帶一對(先前的結果以及下一個序列元素),連續地將現有的結果和下一個值作用在獲得的隨後的結果上,最後減少我們的序列爲一個單一的返回值;如果初始值init給定,第一個比較會是init和第一個序列元素而不是序列的頭兩個元素
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章