4、python基礎——裝飾器
阿新 • • 發佈:2018-12-26
def log(func): def my_time(a,b): def wrapper(*args): print(time.asctime()) s_time = time.time() temp = func(a,b) e_time = time.time() print(e_time-s_time) return 'OK' return wrapper() return my_time @log def f(x,y): print("執行程式") time.sleep(1) print(x+y) n = f(1,2) print(n)
def my_time(func): def wrapper(): s_time = time.time() func() e_time = time.time() print(e_time-s_time) return wrapper #執行的時候的是脫衣服,先脫外層,再脫內層 #@log #先裝飾,日至 外層衣服 @my_time #後裝飾,效能 內層衣服 def f(): print('i am f') time.sleep(3) f() 執行結果: i am f 3.0001718997955322
#閉包:內層函式訪問外層函式的變數 #裝飾器:本質是個函式 #作用:用來裝飾其他函式,給其他的函式附加新的功能 #原則:1、不能修改被裝飾的函式的原始碼 # 2、不能改變被裝飾函式的呼叫方式 #應用場景:插入日至,效能測試,處理事務 #例:測試函式的執行時間 import time def f(): print('i am f') time.sleep(2) def new_f(): s_time = time.time() #開始時間 f() e_time = time.time() #結束時間 print('耗時:{}'.format(e_time-s_time)) new_f()