python 高階函式

2021-09-30 13:29:27 字數 2495 閱讀 3288

########高階函式########

1.函式

函式本身也可以賦值給變數,即:變數可以指向函式。

函式名其實就是指向函式的變數!

上述操作發現:abs為函式名,給abs=1重新賦值後,abs已不是函式,而是乙個整數。

2.高階函式

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

3.map函式

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

map() 作為高階函式,把運算規則抽象了.

練習: 把這list列表中的所有數字轉為字串;([1,2,3]---['1','2','3'])

4.reduce函式

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

綜合程式設計:寫出把 str 轉換為 int 的函式(eg:'12345'--12345)

5.map/reduce練習題

•利用 map() 函式,把使用者輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。輸入: ['adam', 'lisa', 'bart'] ,輸出: ['adam', 'lisa','bart'] 。

•python 提供的 sum() 函式可以接受乙個 list 並求和,請編寫乙個 prod()函式,可以接受乙個 list 並利用 reduce() 求積。

6.filter函式

filter() 也接收乙個函式和乙個序列。和 map() 不同的時,filter() 把傳入的函式依次作用於每個元素,然後根據返回值是 true還是 false 決定保留還是丟棄該元素。

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

7.sorted函式

• 排序也是在程式中經常用到的演算法。 無論使用氣泡排序還是快速排序,排序的核心是比較兩個元素的大小。通常規定如下:

x < y, return -1

x == y, return 0

x > y, return 1

• python內建的 sorted() 函式就可以對 list 進行排序;

• 如果要倒序排序呢?

• 如果要對字串進行排序呢?

高階函式的抽象能力非常強大,而且核心**可以保持得非常簡潔。

8.函式作為返回值

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

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

9.匿名函式

•當我們在傳入函式時,有些時候,不需要顯式地定義函式,直接傳入匿名函式更方便。

•關鍵字 lambda 表示匿名函式,冒號前面的 x 表示函式引數

• 匿名函式有只能有乙個表示式,不用寫 return ,返回值就是該表示式的結果。

• 因為匿名函式沒有名字,不必擔心函式名衝突。 此外,匿名函式也是乙個函式物件,也可以把匿名函式賦值給乙個變數,再利用變數來呼叫該函式;

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

匿名函式傳遞可變引數

匿名函式傳遞關鍵字引數

• 也可以把匿名函式作為返回值返回

10.裝飾器

• 裝飾器就是用來裝飾函式。

• 想要增強原有函式的功能;

• 但不希望修改now()函式的定義;

• 在**執行期間動態增加功能的方式;

• 定義的裝飾器實質是返回函式的高階函式。(試試下面的裝飾器)

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