竹径风声

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

装饰器装饰没有返回值函数:

 

装饰器装饰有返回值函数:

如图可以看到,无论被装饰的函数有无返回值,其结果都无返回值,原因其实很简单,因为inner()函数根本就没有返回值。为了实现有返回值的函数被装饰之后仍然有返回值,需要inner函数与被装饰函数的返回值保持一致。

可以看到,有返回值的函数被装饰之后依然有返回值,没有返回值的函数被装饰之后则没有返回值,符合我们想要的结果。

 

双重语法糖(带参数)

也就是说最外层的语法糖先执行。

 

 

装饰器和闭包的关系:

 装饰器是用闭包来实现的。

装饰器其实是闭包的特例, 其外部函数传的参数是函数名而已。

 

详细分析参考博文:https://blog.csdn.net/qq_42156420/article/details/81169554

 

posted on 2019-03-06 10:10  竹径风声  阅读(124)  评论(0)    收藏  举报