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

请问在下面这段代码里面return r和return f有什么不一样,为什么return f就是错的

import time 

def performance(text):

    def log_decorator(f):

        def fn(*args,**kw):

            t1 = time.time()

            r = f(*args,**kw)

            t2 = time.time()

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

            print 'call %s() in %fs' %(f.__name__,t)

            return r

        return fn

    return log_decorator


@performance('ms')

def factorial(n):

    return reduce(lambda x,y:x*y,range(1,n+1))

print factorial(10)


正在回答

2 回答

return r,返回的是f函数的结果,return f 是返回函数名

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

偷橘子的猫 提问者

那为什么非要返回f函数的结果呢?前面的课不是返回函数f也可以的吗?
2017-07-18 回复 有任何疑惑可以回复我~
#2

偷橘子的猫 提问者

懂了懂了,多谢解答
2017-07-18 回复 有任何疑惑可以回复我~

可以return f(*args,**kw)

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

举报

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

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

进入课程

请问在下面这段代码里面return r和return f有什么不一样,为什么return f就是错的

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