首页 > 试题广场 >

想实现用装饰器来计时,空白处应填的代码是? # -*- co

[单选题]
想实现用装饰器来计时,空白处应填的代码是?
# -*- coding: utf-8 -*-
import time, functools
def metric(fn):
    # 空白处
    def wrapper(*args, **kw):
        startTime = time.time()
        tmp = fn(*args, **kw)
        endTime = time.time()
        print('%s executed in %s s' % (fn.__name__, endTime - startTime ))
        return tmp
    return wrapper
  • 无需填写
  • @functools
  • @time(fn)
  • @functools.wraps(fn)

Python 中使用装饰器对在运行期对函数进行一些外部功能的扩展。但是在使用过程中,由于装饰器的加入导致解释器认为函数本身发生了改变,在某些情况下——比如测试时——会导致一些问题。Python 通过 functool.wraps 为我们解决了这个问题:在编写装饰器时,在实现前加入 @functools.wraps(func) 可以保证装饰器不会对被装饰函数造成影响。

发表于 2018-06-24 17:04:44 回复(0)