python 裝飾器從放棄到玩轉(高級)

前面說了ide

  1. 計算原有函數的執行時間
    函數

  2. 利用裝飾器如何給原有函數傳參ci

  3. 利用裝飾器如何接受原有函數的返回值it


最後咱們說下如何給裝飾器傳值class

舉個例子,有的函數我須要統計函數的運行時間,有的函數我須要統計他開始執行的時間,有人會說能夠寫多個裝飾器,這個方法能夠,可是這種方法會不會讓咱們的代碼閒的過於臃腫test


假設test01須要計算函數的運行時間
原理

看代碼方法

def record_time(key):im

    def out_warppper(func):統計

        def warpper(*agrs,**Kwagrs):

            start_time = time.time()

            a = func(*agrs,**Kwagrs)

            end_time = time.time()

            print "總共用時:" + str(int(end_time) - int(start_time))

            return a

        return warpper

    return out_warpper


@record_time("test01")

def test01(name=name):

    time.sleep(3)

    print "test"

    return name


r = test01("tets01")

print r


解釋

  1. @record_time("test01")== test01 = record_time("test01") == out_warpper(test01) == warpper

  2. test01("test01") == warpper("test01")

  3. 執行warpper函數

  4. 執行原test01函數


能夠看到不論是接受原函數的返回值,接受函數傳參,裝飾器接受參數,只要你真正理解了裝飾器的調用原理及方式,都不難實現

相關文章
相關標籤/搜索