首页 > 其他 > 详细

装饰器之起飞版

时间:2019-11-14 09:11:23      阅读:58      评论:0      收藏:0      [点我收藏+]

原则:

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

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

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

装饰器之起飞版

原文:https://www.cnblogs.com/bigbox/p/11854394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!