裝飾器的一些問題

2021-08-20 03:35:39 字數 828 閱讀 3844

裝飾器是為了再不改變函式內部結構的情況下附加給方法一些功能,就像是給方法套上了一層有功能的外殼。如果把乙個方法比作乙個人,那麼裝飾器就是它的一些工具,用不同的裝飾器可以讓這個人做不同的事,但本身外物並沒有改變人的內部結構。

裝飾器本身也是乙個函式,一般的裝飾器會涉及三個函式,我將其記為dec,wrap和func。dec是指最外層的函式,也就是裝飾器本身,而wrap是內層函式,並不執行。最後是func,指代的是被裝飾的函式。規律是dec引數是func,返回是wrap的函式名;wrap引數是func的引數,返回func(args, *args, **kargs)。用的時候只需要經過@來放在被裝飾的函式前就行了。

#coding: utf-8

def dec0(func): # 首先定義乙個dec0裝飾器,它的功能是在執行前輸出一句話

def wrap(a,b): # 外反內名,內反函式

print("it is a decorate.")

return func(a,b)

return wrap

def dec1(func): # 定義第二個裝飾器dec1

def wrap(a,b):

print("it is a decorate, too.")

return func(a,b)

return wrap

@dec1

@dec0 # 這是先執行dec0再執行dec1

def plus(a,b):

print (a + b)

return a + b

plus(1,2)

dec1(dec0(plus(1,2)))

String 一些問題

前言 等號 對於基本型別,比較的是值,對於引用型別,比較的是記憶體位址。1.在物件池中建立,如果常量池中已經存在則返回常量池中已經有的。private static void test1 結果 true 2.乙個在string pool中,乙個在堆中。private static void test...

C 一些問題

1 if else語句和switch case語句的效率分析對比 switch效率高。switch的效率與分支數無關,當只有分支比較少的時候,if效率比switch高,因為switch有跳轉表。分支比較多,那當然是switch 根據大量的實際程式測試 不考慮不同的編譯器優化程度差異,假設都是最好的優...

mysql 一些問題

1 中文亂碼 問題 推薦用 uft 8 編碼 適配一切介面,mysql中 發生中文亂碼時 開啟mysql 安裝路徑 更改後 重啟mysql 服務即可,有時也需要 重新匯入資料庫 可能是與 source 檔案時 編碼沒有設定好 client password your password port 33...