为了账号安全,请及时绑定邮箱和手机立即绑定

为什么带参数的装饰器要加多一个函数啊?装饰器好像有时并不是那么好用?

代码是运出来了,但是我压根就没懂为什么加多一个函数就可以在打印函数名的时候有后缀ms,难道是通过叠加函数并返回新的函数达到更新函数的作用?那为什么要不停的叠加函数呢?干脆直接编写新的函数不是更快,因为好像真正起作用的 :

t = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1) 

print 'call',f.__name__ +'()',t,unit

这两步还是要重新编写啊?!

这是不是说明“装饰器”有时并不好用?

这节课看不懂是不是要重新补一下闭包的知识?(虽然我已经看了好几遍闭包了,但这节课还是糊里糊涂的。)

希望这节课看懂的同学可以教教小白,ε=(´ο`*)))唉

https://img1.sycdn.imooc.com//5c3c4ecf0001213506200656.jpg

正在回答

4 回答

就是不用重新把所有的代码写一遍了,多少还是要写一点东西,要不怎么知道怎么添加的新功能,至于有的想不明白看不懂可以先做好标记往下看,回过头来可能会好一点

0 回复 有任何疑惑可以回复我~
#1

慕容7012403 提问者

好的,谢谢你的回答,继续往下看真的很重要,尤其对于坚持学习来说尤为重要
2019-03-09 回复 有任何疑惑可以回复我~

想要实现一个功能,如果不用闭包,就是一层函数。

如果加上闭包,保护内层函数,那就套一层函数。


如果用装饰器,有一层需要传真正的函数作为参数,有一层需要传递真正的函数的参数作为参数,那就一共套两层。

如果装饰器也有参数要传进去,那就再套一层。

2 回复 有任何疑惑可以回复我~

装饰模式你听说过吗。。。。

0 回复 有任何疑惑可以回复我~

函数嵌套,使得最终实现的效果和无参装饰器一样,即通过返回一个装饰器使得传入参数变成了一个固定值

0 回复 有任何疑惑可以回复我~
#1

慕容7012403 提问者

那请问装饰器的作用是方便修改程序吗?不太理解嵌套函数的作用是什么,最终不是还是要修改fn函数,达到添加单位的作用吗?为什么不直接修改函数,一步到位呢?
2019-01-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

为什么带参数的装饰器要加多一个函数啊?装饰器好像有时并不是那么好用?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信