• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

关于装饰函数

def f1(x):    return x*x def f2(x):    return x*x*x def f3(x):    return x*x*x*x print f1(9)print f3(9)def new_fn(f):    print 'call '+f.__name__+'()'    return ff1=new_fn(f1)print f1(9)上面是我写的,在定义def new_fn(f)的时候 我没有定义教程中的 def fn(x),但是我的结果也是正确的。这是否代表教程中def fn(x),是多此一举,还是因为我忽略了什么知识

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

说下个人理解,任何函数的出现我们都是希望在调用它时输出结果,你的代码中,如果说按照装饰器的写法来写(把f1=new_fn(f1)改写成@new_fn),我们来看看结果。
224009jkeut95ddttpur9f.jpg
可以发现我们还没有进行任何调用操作,就出现了装饰器函数中的输出结果。这在语法上没有任何问题,但不符合我们写函数的目的,我们都还没有调用就输出,所以说在装饰器函数中我们写入了fn(x)这样的嵌套函数以后,返回的是函数调用。
改写后:
224025c0aqxszwfaxh0fa8.jpg
可以看出运行后,不会自动输出装饰结果,只会返回函数的引用,这是符合我们的要求的。
224036iw8g4fkwwb1w5188.jpg
当调用f1函数时候,才会输出当前的结果。

使用道具 举报

发新帖

发布任务需求已有1031288位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!