python裝飾器

1.預備知識:函數

1 def Test01():
2     print('------Test1----------------')
3 def Test01():
4     print('------------Test02---------')
5 Test01()
6 # 結果爲:------------Test02---------

 以下圖所示:咱們能夠將函數名理解爲變量名,將函數理解爲一個具體的變量,定義函數時,函數名與函數的關係理解爲一種賦值的關係,即就是把這個函數賦值給了對應的函數名;而在內存中一個變量只能表示或者說指向一塊內容spa

2.原理代碼示例:code

# 定義裝飾器函數
def decorate(func):
    def inner():
        print('-------你在幹什麼?----------')
        func()
    return inner
# 定義功能函數
def play():
    print('-------我正在玩遊戲------------')
Test = decorate(play)
Test()
# 執行結果爲:
# -------你在幹什麼?----------
# -------我正在玩遊戲------------

 

經過下圖1-5步來解釋上述函數的調用過程,並引出裝飾器 blog

3.裝飾器代碼示例:遊戲

 1 # 裝飾器函數
 2 def decorate(func):
 3     def inner():
 4         print('-------你在幹什麼?----------')
 5         func()
 6     return inner
 7 @decorate # 等價於上圖中分析的play=decorate(play)
 8 def play():
 9     print('-------我正在玩遊戲------------')
10 # 調用play函數
11 play()
12 
13 # 結果爲:
14 # -------你在幹什麼?----------
15 # -------我正在玩遊戲------------

 理解:使用裝飾器咱們的目的是:在不改變原函數的狀況下,可以增長原函數的功能;本質實爲打亂原用的調用關係,將原函數指向另一個新函數,而這個新函數內部又有相應的變量來調用咱們原函數,從而在新函數中添加一些新的功能。這樣咱們在調用原函數時,就會執行這些功能,從而對原函數有一個裝飾的做用;內存

相關文章
相關標籤/搜索