python 高階函式

2021-08-03 18:41:30 字數 2171 閱讀 2005

高階函式

變數可以指向函式,函式的引數能接收變數,那麼乙個函式就可以接收另乙個函式作為引數,這種函式就稱之為高階函式。

map函式

map() 函式接收兩個引數,乙個是函式,乙個是序列, map 將傳入的函式依次作用到序列的每個元素,並把結果作為新的 list 返回

reduce函式

reduce 把乙個函式作用在乙個序列[x1, x2, x3...]上,這個函式必須接收兩個引數,reduce 把結果繼續和序列的下乙個元素做累積計算

filter():filter函式接受函式引數f和列表引數lst,f對lst元素進行判斷,返回lst的元素中呼叫f函式結果為true的元素組成的列表(將不滿足f函式條件的元素過濾掉):

在乙個 list 中,刪掉偶數,只保留奇數:

sorted函式

• 排序也是在程式中經常用到的演算法。 無論使用氣泡排序還是快速

排序,排序的核心是比較兩個元素的大小。通常規定如下:

x < y, return -1

x == y, return 0

x > y, return 1

相反定義返回值相反:

函式作為返回值

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

函式作為返回值

呼叫 lazy_sum() 時,每次呼叫都會返回乙個新的函式,即使傳入相同的引數

匿名函式 

#[1,2,3...10]

# [1,4,9,....100]

# 匿名函式的優勢:

#   1). 匿名函式不需要函式名,可以避免函式名的衝突;

#   2). 匿名函式可以跳過給函式分配棧空間;

def pow1(x):

return x*x

print map(pow1,range(1,11))

print map(lambda x:x*x, range(1,11))

# 匿名函式可以賦值給乙個變數,需要執行時,變數名()

f = lambda :1

print f()

# 匿名函式傳遞必選引數和預設引數

f = lambda x,y=2:x**y

print f(2,3)

print f(2)

# 匿名函式傳遞可變引數

f = lambda *x:map(lambda x:x+x,x)

print f(1,2,3,4)

# 匿名函式傳遞關鍵字引數

#練習:利用匿名函式和字典重新編輯計算器的**。

裝飾器:用來裝飾函式的乙個函式

新增功能,裝飾函式;

#   1). 不修改函式的源**;

#   2). 函式的呼叫方式沒有改變

python 函式高階 python 函式高階

形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...

Python高階 函式高階

閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...

python 函式 高階函式

filter 函式是 python 內建的另乙個有用的高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如判斷奇偶數 def...