1. 程式人生 > >九.Python_裝飾器

九.Python_裝飾器

Python_裝飾器

import time #匯入時間模組

#18.裝飾器  函式
#作用:不修改目標函式,給目標函式附加不具有的功能
    #原則
    #不改變目標函式原始碼
    #不改變目標函式的呼叫方式

#裝飾器=高階函式+函式巢狀+閉包

    #獲取函式執行時間的裝飾器函式
        # def timer(func):#獲取函式
        #     def wrapper(*args,**kwargs):  #獲取不定向方法引數
        #         start_time=time.time()#獲取開始時間
        #         res=func(*args,**kwargs)    #執行函式
        #         stop_time=time.time()#獲取結束時間
        #         print("函式執行時間為:%s"%(stop_time-start_time))#輸出花耗時間
        #         return res#輸出返回值
        #     return wrapper#將裝飾器函式作為返回值返回給目標函式

    #迴圈函式並且在函式前後列印的裝飾器
        # def sn(max):#接收@sn的引數
        #     def sn(fun):#接收函式
        #         def wraper(*args,**kwargs):#接收函式不定向引數
        #             res=0
        #             for i in range(max):#迴圈函式
        #                 print("First.....")
        #                 res+=fun(*args,**kwargs)
        #                 print("End.......")
        #             return res  #返回res接收的函式
        #         return wraper  #返回wraper函式
        #     return sn #返回_sn函式

    #測試函式
        # @sn(2)#迴圈兩次cale函式
        # @timer#呼叫裝飾器函式
        # def cale(l):
        #     res=0
        #     for i in l:
        #         time.sleep(0.1)
        #         res+=i
        #     return res
        #
        # print(cale(range(20)))