一 高階函式(即函式的引數能接收別的函式)
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...