函式式程式設計

2021-09-21 18:34:54 字數 2180 閱讀 5612

高階函式:乙個函式可以接收另乙個函式作為引數,這種函式就稱之為高階函式

abs :絕對值函式

map(function, iterable, …)

功能將第乙個引數 function 依次作用在引數可迭代物件中的每乙個元素上,返回包含每次 function 函式返回值的新迭代器

引數function – 函式,有兩個引數

iterable – 乙個或多個可迭代物件(如:序列)

返回值python 3.x 返回迭代器

def f(x):

return x*x

r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])

print(list®)

執行結果:

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

reduce(function, iterable[, initializer])

功能函式將乙個資料集合(鍊錶,元組等)中的所有資料進行下列操作:用傳給 reduce 中的函式 function(有兩個引數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個資料用 function 函式運算,最後得到乙個結果。

其效果類似:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

引數function – 函式,有兩個引數

iterable – 可迭代物件

initializer – 可選,初始引數

返回值返回函式計算結果。

from functools import reduce

def add(x, y):

return x + y

r = reduce(add, [1, 3, 5, 7, 9])

print®

執行結果:

25filter(function, iterable)

功能該接收兩個引數,第乙個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判,然後返回 true 或 false,最後將返回 true 的元素放到新迭代器物件中

引數function – 判斷函式

iterable – 可迭代物件(如:序列)

返回值返回乙個迭代器物件

def is_odd(n):

return n % 2 == 1

tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

newlist = list(tmplist)

print(newlist)

執行結果:

[1, 3, 5, 7, 9]

sorted(iterable, key=abs, reverse=false)

功能對所有可迭代的物件進行排序操作

引數iterable – 可迭代物件。

key – key指定的函式將作用於可迭代物件上的每乙個元素,並根據key函式返回的結果進行排序

reverse – 排序規則,reverse = true 降序 , reverse = false 公升序(預設)

返回值返回重新排序的列表

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

執行結果:[-21, -12, 5, 9, 36]

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

#abs 絕對值函式

執行結果:[5, 9, -12, -21, 36]

07.返回函式:高階函式除了可以接受函式作為引數外,還可以把函式作為結果值返回。

08.閉包的定義:在乙個外函式中定義了乙個內函式,內函式裡運用了外函式的臨時變數,並且外函式的返回值是內函式的引用。這樣就構成了乙個閉包。

09.裝飾器:裝飾器是在函式呼叫之上的修飾。這些修飾僅是當宣告乙個函式或者方法的時候,才會應用的額外呼叫。

裝飾器的語法以@開頭,接著是裝飾器函式的名字和可選的引數。緊跟著裝飾器宣告的是被修飾的函式和裝飾函式的可選引數。

10.匿名函式:變數 = lambda 引數:表示式(返回值) print(變數(實參))

11.遞迴函式:在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。

12.偏函式:由functools.partial建立,它的作用就是,把乙個函式的某些引數給固定住(也就是設定預設值),返回乙個新的函式,呼叫這個新函式會更簡單。

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

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

函式式程式設計

最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計 fp 的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一 另外我知道的還有個是gc,orz.光注意那些詭異的 表 去了。總結一下,傳統上認為f...

函式式程式設計

維基百科 函式式程式設計 英語 functional programming 或者函式程式設計,又稱泛函程式設計,是一種程式設計范型,它將計算機運算視為數學上的函式計算,並且避免使用程式狀態以及易變物件。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當...