Discuss / Python / 哈哈手写wraps()的o(∩_∩)o 哈哈

哈哈手写wraps()的o(∩_∩)o 哈哈

Topic source

手写wraps()虽然有点铁憨憨 ...但很有趣

import time
def wraps(func_n):
  def decorator(func):
    def wrapper(*args, **kw)
      return func(*args, **kw)
    wrapper.__name__ = func_n.__name__
    return wrapper
  return decorator

def metric(func):
  @wraps(func)
  def wrapper(*args, **kw):
    t = time.time()
    r = func(*args, **kw)
    print(' executed in ' + str(time.time - t) + ' ms')
    return r
  return wrapper

@metric
def fast(x, y):
  time.sleep(0.0012)
  return x + y

@metric
def slow(x, y, z):
  time.sleep(0.1234)
  return x * y * z

f = fast(11, 22)
s = slow(11, 22, 33)
if f != 33:
  print('测试失败')
elif s != 7986:
  print('测试失败')


  • 1

Reply