python 高階函式

2021-10-02 19:31:27 字數 1677 閱讀 8808

#1.高階函式

#把函式作為引數傳入,這樣的函式就叫做高階函式。

# 高階函式是函式式程式設計的體現,函式式程式設計就是指這種高度抽象的程式設計正規化

# 作用 : 化簡**,增加**靈活性

def sum_num(a, b, f):

return f(a) + f(b)

#第三個引數傳入abs()函式

print(sum_num(-1, 5, abs)) #輸出 6

#第三個引數傳入round()函式

print(sum_num(1.1, 2.9, round)) #輸出 4

# 2. 內建高階函式

# 2.1 map()

# map(function, iterable),將傳入的函式變數func作用到lst變數的每個元素中

# 並將結果組成新的列表(python2)/迭代器(python3)返回

# function -- 函式

# iterable -- 乙個或多個序列

def square(x):

return x ** 2

list2 = map(square, [1, 2, 3, 4])

print(list2) #返回迭代器,輸出 print(list(list2)) #輸出 [1, 4, 9, 16]

list3 = map(lambda x : x ** 2, [1, 2, 3, 4])

print(list3) #輸出 print(list(list3)) #輸出 [1, 4, 9, 16]

#提供兩個列表,對相同位置的列表資料進行相加

list4 = map(lambda x, y : x + y, [1, 2, 3, 4], [5, 6, 7, 8])

print(list4) #輸出 print(list(list4)) #輸出 [6, 8, 10, 12]

#2.2 reduce()函式

#reduce(func, lst), 其中func函式必須要有兩個引數

#每次 func 計算的結果繼續和序列的下乙個元素做累積計算

import functools

l1 = functools.reduce(lambda x, y : x + y, [1, 2, 3, 4, 5, 6, 7, 8])

print(l1) #輸出 36

#2.3 filter()函式

#filter(func, lst)函式用於過濾序列,過濾掉不符合條件的元素

# 返回乙個filter物件,如果要轉換為列表,可以用list()轉換

# 將序列中的奇數過濾出來

l2 = filter(lambda x : x % 2 == 1, range(1, 10))

print(l2) #輸出 print(list(l2)) #輸出 [1, 3, 5, 7, 9]

# 將序列中平方根是整數的數過濾出來

import math

l3 = filter(lambda x : math.sqrt(x) % 1 == 0, range(1, 101))

print(l3) #輸出 print(list(l3)) #輸出 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

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...