标签:复制 技术分享 opened open rap pass tools 调用 img
装饰器就是闭包函数的一种应用场景
一 为何要用装饰器
#开放封闭原则:对修改封闭,对扩展开放
二 什么是装饰器
装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象。 强调装饰器的原则: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__)
标签:复制 技术分享 opened open rap pass tools 调用 img
原文地址:https://www.cnblogs.com/lijiangyang/p/9172980.html