请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

装饰器装饰后,return 返回的值和原函数 return 返回的值不同

图片描述
老师您好,如图所示,在没有使用装饰器的时候,运行返回结果如下所示,add 内部print 3,下面 print返回了 add return 回来的值"hello"

3
hello

使用装饰器的时候,add 内部 print 3,但是下面 main 中 print 出来的结果不是 hello , 而是 None,如下所示

3
Cost 2.0031261444091797 seconds
None

不知道是装饰器的特性无法 return, 只能运行还是我代码上的问题。

正在回答 回答被采纳积分+3

插入代码

1回答

提问者 羁书贵公子 2019-10-18 17:16:20

https://img1.sycdn.imooc.com//szimg/5da9826709ff4f0609640894.jpg

主要原因是 warpper 仅仅运行了 add ,但是没有接收 add 返回的值

而这里是 使用 wrapper 对 add 进行包裹,所以不能直接 return func()(后面的代码就无法运行)

所以,用 res 接收 func 即 add 返回的值,在 wrapper 的最后返回这个值即可。

0 回复 有任何疑惑可以回复我~
  • bobby #1
    正解。
    回复 有任何疑惑可以回复我~ 2019-10-20 12:27:44
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信