Discuss / Python / 要点在于在函数调用后装饰器依然运行

要点在于在函数调用后装饰器依然运行

Topic source

青铜神裔

#1 Created at ... [Delete] [Delete and Lock User]
  • 例题中的装饰器只需要在目标函数执行前输出语句,因此可以在装饰器的内层函数直接返回目标函数作为结束。
  • 作业则要求在目标函数执行完成后依然运行装饰器,用以计算时间。

    def metric(fn):

    @functools.wraps(fn)
    def wrapper(*args,**kw):
        strat = time.clock()
        result = fn(*args, **kw)
        print('%s executed in %s ms' % (fn.__name__, time.clock() - strat))
        return result
    return wrapper
    

在装饰器的函数体中运行目标函数得到结果,计算运行时间,然后返回目标函数结果作为结束。

青铜神裔

#2 Created at ... [Delete] [Delete and Lock User]

更正,例题也是返回目标函数执行结果。 如果愿意,可以写成:

result = func(args, *kw) reture result


  • 1

Reply