體驗Python函式式程式設計

2021-04-12 18:02:19 字數 1194 閱讀 4766

在函式式程式設計裡面, 我們可以定義匿名函式,也可以把函式賦值給乙個變數或作為引數傳遞給另外乙個函式,python語言很早就支援函式式程式設計,我們可以用lambda關鍵字定義乙個匿名函式,然後賦值給乙個變數,如下所示:

>>> f=lambda(n):n**2

>>> f(6)

36>>> f=lambda(n):lambda(m):n*m

>>> g=f(5) #相當與g=lambda(m):5*m

>>> g(9) #相當於5*9

45lambda定義的匿名函式可以引用外圍函式的變數,上面的**中,第二個lambda表示式定義的匿名函式引用了第乙個匿名函式的引數n,因為第乙個匿名函式是第二個匿名函式的外圍函式。

除了lambda表示式之外,python還支援將函式作為引數傳遞給另外乙個函式,有點類似於c語言中的函式指標,python語言內建的函式filter,map,reduce就可以接受函式引數。

filter(function, sequence)會遍歷sequence中的每乙個item,並以該item為引數呼叫function,如果function返回ture,就將該item加到結果sequence中,這就達到過濾sequence的效果,作為引數的function就是過濾的條件,例子如下:

>>> a=range(1,10)

>>> filter(lambda(n):n%2==0,a)

[2, 4, 6, 8]

這裡用lambda定義的匿名函式來定義過濾條件,在list a中返回是偶數的items

map(function, sequence)也是遍歷sequence中的每乙個item,並以該item為引數呼叫function,然後將執行結果新增到最終的結果sequence中,例子如下:

>>> b=range(1,10)

>>> map(lambda(n):n**2,b)

[1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce(function, sequence)先把sequence中的頭兩個item作為引數傳給function,將function的執行結果跟第三個item作為引數再次傳給function,直至遍歷完sequence,最後把單個值返回,例子如下:

>>> def add(x,y):

return x+y

>>> reduce(add,range(1,10))

45

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...

Python函式式程式設計

python函式式程式設計的核心思想是 把函式當資料.所以,函式可以用作函式引數,函式返回值,元組或字典成員等 閉包閉包是實現 復用的一種途徑,與類不同的是它基於函式實現.函式與它的環境變數一起就構成了閉包,閉包只有乙個返回值,那就是閉包中的函式 def line conf a,b def line...

python函式式程式設計

一 lambda 主要用來自定義行內函式 二 map 首先定義乙個函式,再用map 命令將函式逐一應用到map列表中的每個元素,最後返回乙個陣列 例如 map lambda x,y x y,a,b 表明將a,b兩個列表的元素對應相乘,把結果返回到新列表。三 reduce 用於遞迴運算 例如 redu...