首頁 > 軟體

python高階函數使用教學範例

2022-06-27 14:02:35

一、高階函數

函數定義

python中,函數名是變數,下方這個method函數名看成變數,指向一個計算的函數!因此函數名其實就是指向函數的變數,故變數可指向函數;

變數可指向函數,且函數的變數可接受變數,那麼任意一個函數可接受一個函數作為引數,這種函數就叫高階函數

函數名可作為返回值、也可作為引數

def method(a,b):
  return a+b
a = method
print(a(1,4))
#輸出; 5

(1)函數名作為引數

def fun(a):
  return a*a
def fun1(a,b,c):
  return a(b)+a(c)
print(fun1(fun(),1,5))   # fun()作為引數,傳給fun1
#輸出:26

(2)函數名作為返回值

def fun(a):
  def fun2(b):
    return a*b
  return fun2()
a = fun(1)    
print(a)     #外部函數返回的是一個函數物件,也就是一個變數,然後作為函數物件傳參,獲得內部函數的返回值
print(a(3))
# 輸出:<function method.<locals>.method2 at 0x02B5E9C0>
6

二、常用的高階函數

map、filter、reduce

先講下匿名函數lambda,

語法格式:lambda[形參1,形參2,... :表示式]

表示式執行後,返回冒號後表示式;

x = 1
lambda x:x+3

(1)map(function,iterable)

它第一個要傳的元素是函數名或lambda匿名函數表示式,第二個要傳的是可迭代物件;

python 2.x 返回列表,python 3.x 返回迭代器

array = [1,4,7]
a = map(lambda x:x+1,array)
print(a)
print(list(a))
輸出:<map object at 0x02AB11B0>
[2, 5, 8]       

map()函數的作用就是將可迭代物件裡的每個元素進行函數操作,然後將元素操作後所組成的可迭代物件返回

(2)filter(function, iterable)

同樣,它第一個要傳的元素是函數名或lambda匿名函數表示式,第二個要傳的是可迭代物件

array = [1,4,7]
a = filter(lambda x:x+1,array)
print(a)
print(list(a))
輸出:<filter object at 0x02AB11B0>
[1,4,7]      
array = [1,4,7]
a = filter(lambda x:x%2==0,array)
print(a)
print(list(a))
輸出:<filter object at 0x02AB11B0>
[4]

filter函數,就是將可迭代物件的元素帶入函數,返回True的物件,一般用於篩選使用,省略for迴圈

(3)reduce(function, iterable)

它傳的是2個元素,將前2個元素帶入函數中,然後將返回值作為一個元素,與第三個元素進行運算,直到結束返回最後結果。

reduce(function, iterable[, initializer]),從左到右對一個序列的項進行累計

reduce() 函數在 python2 中是內建函數,在 python3 中放到了 functools 模組下:

from functools import reduce
array = [1,2,3,4,5]
result = reduce(lambda x,y:x+y,array)
print(result)
#結果:15
1+2 = 3
3+3 = 6
6+4=10
10+5=15

以上就是python高階函數使用教學範例的詳細內容,更多關於python高階函數的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com