装饰器之起飞版

原则:

装饰器去装饰一个函数 :不改变被装饰函数的源代码,不改变被装饰函数的调用方式

# 基础形态    **********这才是终极版************

def wrapper(func): # func函数对象 ---> 被装饰对象 # *args, **kwargs用于接收被装饰对象的参数 def inner(*args, **kwargs): # 在调用被装饰对象前 添加新功能 @beforemethod res = func(*args, **kwargs) # 在调用被装饰对象后 添加新功能 @aftermethod return res return inner # if -- else 形态 def sleep(): print('111') sleep = wrapper(sleep) # = return inner 即sleep = inner sleep() =inner() # sleep() = 装饰器里面的inner() , #可以debug看一下

总结:1.被装饰装饰过的函数:调用被装饰函数时  就是在调用装饰器里面的inner()       

           2. 可以在被装饰对象前加新功能,也可以在被装饰函数后面加新功能

           3.不改变被装饰函数的调用方式:1.不改变原函数名 2.不改变被调用函数的参数

           4. 如果装饰中没有增加任何新功能只有被装饰的函数,这里叫作空装饰器,调用被空装饰其装饰的函数时,相当于直接执行被装饰的函数

猜你喜欢

转载自www.cnblogs.com/bigbox/p/11854394.html