有点不明白为什么要多加一层装饰

有点不明白为什么要多加一层装饰

有点没太明白为什么要加一层decorator(func)装饰,之前试了一下不加decorator(func)程序就报错了。还有每加一层装饰就要return一下这个函数吗?有点没太明白这里面的逻辑。还有就是为什么要把func作为形参放入decorator里,我试了一下把func放到wrapper里也是报错了

http://img1.sycdn.imooc.com//climg/5e981bb609655ab100000000.jpg

没加decorator,然后把func放在wrapper里了,然后报错

http://img1.sycdn.imooc.com//climg/5e98203a093c18a528221394.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好:首先装饰器必须写成闭包的格式,即外层函数返回内层函数对象,内层函数使用外层函数的局部变量,因此func不能写在最内层的wrapper中,要写在decorator(func)里。而外面又嵌套一层函数是因为我们想要传递参数,需要再嵌套一层进行接收参数,因此要在最外层接收参数log(name=None)。如下图:

http://img1.sycdn.imooc.com//climg/5e982bac0946ecb504560262.jpg

如果解决了你的疑惑,请采纳,祝学习愉快~ 


  • weixin_慕妹5398817 提问者 #1
    大概懂了,内层函数使用外层函数的局部变量能再具体说一下吗?这块有点没懂
    2020-04-16 18:31:20
  • 同学你好:函数的形参是函数的局部变量之一,作用域仅限于函数内部。外部函数的形参是func即外部函数的局部变量,内部函数使用func()或返回fun()。
    2020-04-16 19:10:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师