体重的return程序做了什么事情

体重的return程序做了什么事情

装饰器重点额return wrapper和return decorator程序分别做了什么???

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

正在回答

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

2回答

同学,你好。当执行到func()函数时,会执行被装饰函数中的内容。同学可根据下边的例子理解装饰器执行过程:

def deco(func):
    def _deco():  # 3
        print("before myfunc() called.")
        func()  # 4
        print("after myfunc() called.")
    return _deco

@deco
def myfunc():  # 2
    print("装饰器")

myfunc() # 1

分析如下:

1、当调用myfunc()时,发现装饰器deco,会先去执行装饰器,deco(func)中func即myfunc函数

2、执行_deco(),继续往下执行,输出"before myfunc() called."

3、执行到func()时,回到myfunc()函数中输出结果,继续向下执行输出"after myfunc() called."

4、接着执行return _deco结束执行过程

同学可以在程序中多处打断点,使用debug模式下进行调试,可以更方便的理解运行过程

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • 慕神8405820 提问者 #1
    这个过程我了解的,但是到这一步“print("after myfunc() called.")”,已经完成目的了,为什么还要return _deco,起了什么作用
    2020-02-11 15:54:28
  • 好帮手慕美 回复 提问者 慕神8405820 #2
    同学,你好。return _deco只是返回了_deco,可以理解为固定写法。装饰器就是一个返回函数的高阶函数,接受一个函数作为参数(func),并返回一个函数(_deco)。祝学习愉快~~~~
    2020-02-11 17:20:26
  • 慕神8405820 提问者 回复 好帮手慕美 #3
    可以理解为只是约定的规则,但实际没什么用处么
    2020-02-11 18:27:42
好帮手乔木 2020-02-02 14:11:05

同学你好:

return wrapper :函数decorator返回函数wrapper对象,返回wrapper函数中对被装饰函数(func)的操作结果。

return decorator :装饰器(log)返回函数decorator,在decorator函数中返回了函数wrapper对象,该对象返回操作被装饰函数的结果。

依次类推,外层函数(decorator)返回内层函数(wrapper)对象。

如果我解决了同学的问题,请采纳!学习愉快^_^。



  • 提问者 慕神8405820 #1
    最后相当于 text1 =func() 转换成text1 = decorator么?
    2020-02-08 09:43:18
  • 好帮手慕美 回复 提问者 慕神8405820 #2
    同学,你好。同学的理解是不对的,func()可以理解为decorator()函数中的参数func。祝学习愉快~~~~
    2020-02-09 10:29:58
  • 提问者 慕神8405820 回复 好帮手慕美 #3
    那他func()作为参数传进去, 从调func()开始, 执行的流程是怎么样的?
    2020-02-09 23:01:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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