第11天裝飾器基礎
小知識:
1,time模組
import time
time.sleep(5) #5秒內什麼都不幹
print('等了你5秒')
time.time()是從1970年到現在過的秒數。
import time:
a = time.time()
...
b = time.time()
a - b 就是中間...執行的時間秒數。
裝飾器的標準用法:
上面是一個在常用函式中增加程式執行計時功能的案例。使用了閉包的方法。多理解一下。
這時,timmer就是一個裝飾器。
def func():
time.sleep(0.01)
print(‘老闆好,同事好,大家好’)
def time(f): #裝飾器的名稱
def inner(): #這就一個裝飾器。也是一個閉包
start = time.time()
f() #裝飾了這個函式。
end = time.time()
print(end - start)
return inner #返回了閉包的結果。注意一定不能加括號,不然就不能返回inner的記憶體地址了。
func = timmer(func)
func()
一,裝飾器的開放封閉原則:
開放:對拓展是開放的(可以對函式和功能進行拓展,而不修改原始碼)
封閉:對修改是封閉的(不能直接修改已經寫好了的程式碼)
意義:維護程式碼的穩定性,在大公司中團體程式設計的時候非常重要。
使用裝飾器就可以做到不修改原本功能的情況下,還可以給函式新增功能。
二,裝飾器書寫的模式:
上述程式碼def func()處可以市容如下寫法的簡寫:(但是記得先把裝飾器寫在需要定義的函式上面。)
@timmer #@裝飾器函式名
def func()