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

wrapper 这个函数的作用是什么?他接受的参数是干嘛的呢?

import time
def performance(unit):
    def perf_decorator(f):
        def 
            t1 = time.time()
            r = f(*args, **kw)
            t2 = time.time()
            t = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1)
            print 'call %s() in %f %s' % (f.__name__, t, unit)
            return r
        return wrapper
    return perf_decorator

@performance('ms')
def factorial(n):
    return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)


正在回答

1 回答

你这代码是不是错了,第3个def后面是不是漏了 wrapper(*args,**kw):    

加上就没问题了

wrapper是最后装饰完的函数,如果是笨一点的装饰器(手动定义一个新函数),那wrapper就是那个新函数。

然后把这个新函数赋给指向原来函数的那个变量,就把原来函数隐藏了。

他接收的参数,在教程2-13已经说明了,作为一个中介,在wrapper里面又传给了原函数,由此来得到原函数的返回值。

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

举报

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

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

进入课程

wrapper 这个函数的作用是什么?他接受的参数是干嘛的呢?

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