python高階之函式式程式設計

2021-09-16 12:01:43 字數 1257 閱讀 7231

函式式程式設計不是函式程式設計。

函式:function 編寫函式以及呼叫函式;

函式式:fuctional 是一種程式設計正規化,是抽象於計算的程式設計模式;

函式式程式設計的特點:

1.把計算視為函式而非指令;

2.純函式式程式設計:不需要變數,測試簡單,還沒有***;

3.支援高階函式,**簡介;

而python 支援的函式式程式設計特點:

一、不是純函式式程式設計:允許有變數

二、支援高階函式:函式也可以作為變數傳入

三、支援閉包:有了閉包就能返回函式

四、有限度地支援匿名函式

python中變數可以指向函式

abs本身是乙個函式物件,abs(-5)返回的是引數的絕對值;

我們可以將f=abs【變數f指向函式物件】;

則f(-20)和abs(-20)實現相同。

因為函式名就是乙個指向函式的變數,而高階函式就是可以接收函式作為引數的函式(其實就是 接收 的 指向函式的函式名(變數))

例子:def add(x,y,f): return f(x)+f(y) add(-5,-5,abs)

再看函式內部定義函式:

def calc_sum(lst):

def lazy_sum():

return sum(lst)

return lazy_sum

注意: 發現沒法把 lazy_sum 移到 calc_sum 的外部,因為它引用了 calc_sum 的引數 lst。

像這種內層函式引用了外層函式的變數(引數也算變數),然後返回內層函式的情況,稱為閉包(closure)。

def f():

print 'f()...'

def g():

print 'g()...'

return g

將函式放入函式內部可以防止外部呼叫,由外層函式可以返回內層函式名(變數)

匿名函式 lambda 引數:表示式作為高階函式的引數。

python裝飾器(decorator)的作用:就是可以不用修改原函式**實現新的功能

列印日誌:@log

檢測效能:@performance

資料庫事務:@transaction

url路由:@post(『/register』)

Python 函式式程式設計 高階函式

functional programming,函式式程式設計。python對函式式程式設計提供部分支援。對於純函式程式設計,對任一函式,只要輸入是確定的,輸出就是確定的,可稱之為無 我們知道函式的計算結果可以賦值給變數,例如x abs 5 同理,變數也可以指向函式,例如f abs。如果乙個變數指向了...

Python函式式程式設計 高階函式

高階函式 1.實參是乙個函式名 2.函式的返回值是乙個函式 函式本身也可以賦值給變數,變數也可以指向函式 f abs print f 10 傳遞的引數包括函式名 deffun x,y,f return f x f y print fun 10 23,abs map 函式接收兩個引數,乙個是函式,乙個...

Scala之函式式程式設計高階

給你乙個集合 val list list 1,2,3,4,abc 請完成如下要求 將集合 list 中的所有數字 1,並返回乙個新的集合 要求忽略掉 非數字 的元素,即返回的 新的集合 形式為 2,3,4,5 object partialfundemo01 模式匹配 def addone2 i an...