代码不理解

代码不理解

为什么最后一定要返回内部函数呢,具体的作用是什么

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

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

1回答
好帮手慕美 2022-06-23 11:28:39

同学,你好!被装饰函数作为参数传入到装饰器的外层函数中,然后在内层函数中运行、附加功能,随后把内层函数作为结果返回。装饰函数的函数名指向的是加工过的函数代码(内层函数),同学可以理解为固定写法。

例:下面的两段代码实现的功能是一样的,添加装饰器后调用func_a()相当于将func_a函数作为参数传到foo函数中即foo(func_a),该函数返回wrapper后,再执行wrapper()

def foo(func):
    def wrapper():
        print("a")
        return func()
    return wrapper

def func_a():
    print("func_a")
foo(func_a)()
@foo
def func_a():
    print("func_a")
func_a()

祝学习愉快!

  • 还是不懂!

    2022-11-19 16:21:34
  • 同学,你好!以下代码为例:

    def foo(func):
        def wrapper():
            print("a")
            return func()
        return wrapper
    
    @foo
    def func_a():
        print("func_a")
    func_a()

    同学可以理解为return wrapper 等同于return wrapper(),wrapper()这样会执行def wrapper()函数,但是装饰器返回内部函数只写函数名,不写括号(),是装饰器固定用法。即:return wrapper 。祝学习愉快~

    2022-11-19 16:57:06
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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