python装饰器是面试测试常问的点,但是这个比较绕,容易忘,我经过了很多次的总结,最后把它总结成了两张图。供大家参考
装饰器概念(背)
python装饰器是用于拓展【某个函数】功能的一个函数,它的好处就是在不用更改【原函数的代码】情况下给它增加新的功能。
实现逻辑(背):
- 装饰器函数中,会有一个形参,接收原来的函数名,并且定义了嵌套函数,参数和原来的函数保持一致。
- 在嵌套函数中,就可以通过这个 形参 实现 原函数逻辑,return嵌套的函数名,最后【老的函数名】会接收到【返回值-嵌套函数名】。
装饰器不带括号时(第一种)(只有一层嵌套)
1.装饰器函数的形参接收 old函数名
2.嵌套函数的形参,与old函数一样

装饰器带了 括号 或者带了参数的(两层嵌套)
1.装饰器函数形参,接收装饰器传的参数
2.需要第一个嵌套(外层的)的函数形参会接收 原来函数名
3.(里层的)嵌套的函数形参,和 原来函数名 一致

补充理解1:
1.调用装饰器,得到的结果 嵌套函数 inner (命名成老函数名)
2.再次调用inner 时,
3.就调用了老函数

补充理解2:
@decorate
def old(name,something):
pass
上面这样写,就表示 old = decorate(old) ,把 old装饰了, 调用了装饰器函数。
开发思维来设计一个装饰器
970

被折叠的 条评论
为什么被折叠?



