裝置器
阿新 • • 發佈:2018-06-12
-c hid DC 裝飾器 ron run In 一行 什麽
有參裝飾器
裝飾器就是閉包函數的一種應用場景
一 為何要用裝飾器
#開放封閉原則:對修改封閉,對擴展開放
二 什麽是裝飾器
裝飾器他人的器具,本身可以是任意可調用對象,被裝飾者也可以是任意可調用對象。 強調裝飾器的原則:1 不修改被裝飾對象的源代碼 2 不修改被裝飾對象的調用方式 裝飾器的目標:在遵循1和2的前提下,為被裝飾對象添加上新功能
三 裝飾器的使用
import time def timmer(func): def wrapper(*args,**kwargs): start_time=time.time() res=func(*args,**kwargs) stop_time=time.time() print(‘run time is %s‘ %(stop_time-start_time)) return res return wrapper @timmer def foo(): time.sleep(3) print(‘from foo‘) foo()
四 裝飾器語法
被裝飾函數的正上方,單獨一行 @deco1 @deco2 @deco3 def foo(): pass foo=deco1(deco2(deco3(foo)))
五 裝飾器補充:wraps
from functools import wraps def deco(func): @wraps(func) #加在最內層函數正上方 def wrapper(*args,**kwargs): return func(*args,**kwargs) return wrapper @deco def index(): ‘‘‘哈哈哈哈‘‘‘ print(‘from index‘) print(index.__doc__)
裝置器