import time

def outter(func):
print(1)
def wrapper(*args, **kwargs):
print(2)
start = time.time()
time.sleep(3)
func(*args, **kwargs)
stop = time.time()
print(stop - start)
print(3)
return wrapper


@outter
def index(x, y):
print(4)
print('index->%s %s' % (x, y))


# 执行顺序为:python解释器启动执行装饰器@outter这一行
# 当碰到@函数名时,会调用@后面的函数并且把下面的函数作为参数穿进去
# 如:outter(index),并执行这个函数,会返回wrapper,就是wrapper的内存地址
# 所有函数index就变成了wrapper(wrapper伪装成了index),下面是正式调用index
# 因为index已经变成了wrapper,所以会直接调用wrapper
# 并且执行完会返回到函数调用处,接着往下执行



index(1, 2)

相关文章:

  • 2022-12-23
  • 2021-07-30
  • 2022-01-06
  • 2021-11-08
  • 2022-01-10
  • 2021-07-26
猜你喜欢
  • 2021-09-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-24
相关资源
相似解决方案