python學習日記:day11-----裝飾器
阿新 • • 發佈:2017-12-28
spa bsp 就是 時間 裝飾 原則 老板 args 函數名
1,time模塊
import time print(time.sleep())#讓程序在執行到這個位置到時候停一會 print(‘哈哈哈‘)
獲取當前時間
import time time.time()#獲取當前時間
一個函數的執行時間:
def func(): start =time.time() print(‘啊哈哈哈哈哈‘) time.sleep(0.01) end =time.time() print(end-start) func()
裝飾器
import time def func(): time.sleep(0.01) print(‘老板好‘) def timmer(f):#裝飾器函數 def inner(): start=time.time() f()#被裝飾的函數 end =time.time() print(end-start) return inner func =timmer(func) func()
裝飾器的作用 #不想修改函數的調用方式,但是還想在原來的函數前後添加功能 #timmer就是一個裝飾器函數,只是對一個函數有一些裝飾作用。 開放封閉原則 #開放:對拓展是開放的 #封閉:對修改是封閉的 語法糖
importtime print(time.time()) # 獲取當前時間 time.sleep(10) #讓程序在執行到這個位置的時候停一會兒 def timmer(f): #裝飾器函數 def inner(): start = time.time() ret = f() #被裝飾的函數 end = time.time() print(end - start) return ret return inner @timmer #語法糖 @裝飾器函數名# func = timmer(func)def func(): #被裝飾的函數 time.sleep(0.01) print(‘老板好同事好大家好‘) return ‘新年好‘ ret = func() #inner() print(ret)
裝飾帶參數函數的裝飾器
def timmer(f): #裝飾器函數 def inner(*args,**kwargs): start = time.time() ret = f(*args,**kwargs) #f(1,2) #被裝飾的函數 end = time.time() print(end - start) return ret return inner @timmer #語法糖 @裝飾器函數名 def func(a,b): #被裝飾的函數 time.sleep(0.01) print(‘老板好同事好大家好‘,a,b) return ‘新年好‘ ret = func(1) #inner() print(ret)
裝飾器函數格式:
def wrapper(f): #裝飾器函數,f是被裝飾的函數 def inner(*args,**kwargs): ‘‘‘在被裝飾函數之前要做的事‘‘‘ ret = f(*args,**kwargs) #被裝飾的函數 ‘‘‘在被裝飾函數之後要做的事‘‘‘ return ret return inner @wrapper #語法糖 @裝飾器函數名 def func(a,b): #被裝飾的函數 time.sleep(0.01) print(‘老板好同事好大家好‘,a,b) return ‘新年好‘
python學習日記:day11-----裝飾器