python高階3 python裝飾器

來源:互聯網
上載者:User

標籤:pre   ref   www   不能   import   func   http   star   .com   

知識內容:

1.裝飾器介紹

2.開放封閉原則

3.裝飾器的固定結構

4.帶參數的裝飾器

5.多個裝飾器裝飾一個函數

 

 

 

一、裝飾器介紹

1.裝飾器的定義

定義: 從本質上講裝飾器還是函數,但是它是為了來裝飾其他函數,也就是為了附加一些功能而產生的

 

 

2.裝飾器的功能及本質

功能: 在不修改原函數及其調用方式的情況下對原函數功能進行拓展

本質: 就是一個函數,也可以說是一個閉包函數

 

 

3.裝飾器的原則

(1)不能修改被裝飾的函數的原始碼

(2)不能修改被裝飾的函數的調用方式

以上兩點說白了就算裝飾器對被裝飾的函數來說是透明的,也就是被裝飾的函數中根本不知道裝飾函數的存在,

被裝飾的函數還是和原來一樣

 

 

4.一個簡單的裝飾器

 1 # 統計程式已耗用時間的裝飾器: 2 import time 3  4 def timmer(func): 5     def warpper(*args, **kwargs): 6         start_time = time.time() 7         func() 8         stop_time = time.time() 9         print("The func run time is %s" % (stop_time-start_time))10     return warpper11 12 @timmer13 def test1():14     time.sleep(3)15     print("In the test1")16 17 18 test1()

 

 

5.實現裝飾器需要的知識

實現裝飾器的知識儲備:

(1)函數即"變數"

(2)高階函數

(3)嵌套函數

高階函數 + 嵌套函數 -> 裝飾器

關於以上內容可以見我另外一篇部落格,具體位置: 點這裡

 

 

二、開放封閉原則

開放封閉原則是開發中的一個重要概念,主要內容如下:

  • 對擴充是開放的
  • 對修改是封閉的

當然在python的開發中使用裝飾器可以很好地實現這個原則,因為裝飾器可以在不修改原函數及其調用方式的情況下對原函數功能進行拓展

 

 

三、裝飾器的固定結構

 

 

四、帶參數的裝飾器

 

 

五、多個裝飾器裝飾一個函數

 

python高階3 python裝飾器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.