1. Learn
  2. /
  3. 课程
  4. /
  5. Python 函数编写

Connected

道练习

衡量装饰器的额外开销

您的主管写了一个名为 check_everything() 的装饰器,自认为特别棒,并坚持要您在函数上使用它。然而,您发现一旦用它来装饰函数,运行速度会慢很多。您需要说服主管,这个装饰器给函数增加了过多的处理时间。为此,您将测量装饰后的函数运行所需时间,并与未装饰函数本该用时进行对比。这是相关的装饰器:

def check_everything(func):
  @wraps(func)
  def wrapper(*args, **kwargs):
    check_inputs(*args, **kwargs)
    result = func(*args, **kwargs)
    check_outputs(result)
    return result
  return wrapper

说明

100 XP
  • 通过调用原始函数而非装饰后的版本来完成比较。使用您主管的装饰器中 wraps() 语句为被装饰函数添加的属性来访问原始函数。