【Python】【自学python】 学到装饰器,为了更好地理解,自己画了一个图,不知道理解的对不对,希望大家指正一下。
有一个原始函数A,现在想要加上额外的功能,但是又不想破外本身代码。
这个函数B是自带其他功能的。
然后把函数A,当作一个函数B的参数,直接扔进去,结果就变成了:
然后最终把这个加上壳的函数A,重新再赋值给函数A
如图:
于是最终,最初的原始函数A,就变成了一个加了外壳新功能的函数A
这个就是装饰器。
打个不恰当的比喻,有点类似于电影《黑客帝国》里面人类的最后堡垒里面的外骨骼装甲机器人,都是一个普通的人类,然后坐上在了战斗机器里面,相当于给一个普通的人类穿上了一个战斗外套,这样既保留了人的特性,又给它加上了新功能,如图:
不知道我的理解对不对?
回答
大概思路是没有问题的,但是其中有一幅图我觉得画的不太对:在函数 B 里面,因该有一个新函数 A,在新函数 A 里面增加了功能1、功能2,并执行了原始函数 A。最后返回的应该是新函数 A,把原始函数 A 覆盖掉
新函数A和原始函数A不应该重名,大致如下
def B(oldA): def newA(*args):
print "wrapper"
oldA(*args)
print "wrapper end"
return newA
看看这个,http://mp.weixin.qq.com/s/0LI...
以上是 【Python】【自学python】 学到装饰器,为了更好地理解,自己画了一个图,不知道理解的对不对,希望大家指正一下。 的全部内容, 来源链接: utcz.com/a/79136.html