1. 程式人生 > 其它 >五十八、python 進階 裝飾器

五十八、python 進階 裝飾器

裝飾器總結

什麼是裝飾器?

  1. 處理函式的函式,加一個功能,但是不影響原來函式的內部結構
  2. 生活中的例子:給手機加一個外殼,外殼保護了手機

裝飾器有什麼用?

  1. 增強函式的功能

裝飾器使用場景

  1. 增加被裝飾函式的行為
  2. 程式碼複用

一個函式接收另一個函式作為引數,這種函式稱之為高階函式。

函式的重要特性

1.在python中,一切皆為物件,所以函式也是一個物件,從而函式可以賦值給變數。

定義一個add函式,函式的功能是實現兩個數想加

系統為函式分配了一個記憶體地址:0x00000000021B3798

2.一個函式可以作為另一個函式的返回值

3.一個函式可以巢狀定義在另一個函式中

4.一個函式可以作為另一個函式的實參。

先來了解一下map函式
map函式是根據指定函式對指定序列做對映,可以有效提高程式執行效率。


看一下map函式的原始碼:map(func, *iterables)

map函式接受兩個引數:

func:指定函式函式
iterables:可迭代物件,一個序列或者多個序列,即函式對應的實參

裝飾器

想要實現一個功能,在不改變 test 函式內部結構的前提下,在前面加一句 “少壯不努力”

弄清楚了裝飾器的工作原理:

  1. 寫一個高階函式,即引數是函式,返回的也是函式;上面的例子,傳函式 test 作為實參,最後返回函式 test ;
  2. 在利用語法糖@,簡化賦值操作;

但這樣的程式碼是有缺陷:test 函式直接返回了函式名,這樣後面就不好呼叫了。
改進: