python的函式式程式設計

2022-02-13 10:56:03 字數 1871 閱讀 7845

一  高階函式(即函式的引數能接收別的函式)

def add(x,y,f)

return (f(x)+f(y))

print(add(-5,6,abs))

11內建函式:filter()函式 用於過濾序列

接受乙個函式與乙個序列

filter()的作用是從乙個序列中篩出符合條件的元素。由於filter()使用了惰性計算,所以只有在取filter()結果的時候,才會真正篩選並每次返回下乙個篩出的元素。

內建函式:sorted()函式 用於排序.

對list進行排序:

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

[-21, -12, 5, 9, 36]

此外,sorted()函式也是乙個高階函式,它還可以接收乙個key函式來實現自定義的排序,例如按絕對值大小排序:

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

[5, 9, -12, -21, 36]

字串排序的例子:

>>> sorted(['bob', 'about', 'zoo', 'credit'])

['credit', 'zoo', 'about', 'bob']

這裡使用比較ascic值的大小。

sorted傳入key函式,即可實現忽略大小寫的排序:

>>> sorted(['bob', 'about', 'zoo', 'credit'],key=str.lower)

['about', 'bob', 'credit', 'zoo']

要進行反向排序的話,只需加入第三個引數,reverse=true

二:返回函式

三:匿名函式

關鍵字:lambda

還是以map()函式為例,計算f(x)=x2時,除了定義乙個f(x)的函式外,還可以直接傳入匿名函式:

>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

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

通過對比可以看出,匿名函式lambda x: x * x實際上就是:

def f(x):

return x * x

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

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

用匿名函式有個好處,因為函式沒有名字,不必擔心函式名衝突。此外,匿名函式也是乙個函式物件,也可以把匿名函式賦值給乙個變數,再利用變數來呼叫該函式:

>>> f = lambda x: x * x

>>> f

at 0x101c6ef28>

>>> f(5)

25

同樣,也可以把匿名函式作為返回值返回,比如:

def build(x, y):

return lambda: x * x + y * y

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

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

Python的函式式程式設計

一 函式式程式設計 什麼是函式式程式設計?函式式程式設計並非用函式程式設計這麼簡單,而是將計算機的運算視為數學意義上的運算,比起面向過程,函式式更加注重的是執行結果而非執行的過程,代表語言有 haskell erlang。而python並不是一門函式式程式語言,但是仍為我們提供了很多函式式程式設計好...

Python函式式程式設計

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