1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import time
def spend_time(function): # 装饰器函数 def inner(*x, **y): # 因为是直接执行 内嵌函数 所以内嵌函数也需要 *x,**y 来接受元素 start = time.time() 👉 function(*x, **y) # 真正执行addFunction的地方 stop = time.time() print(f"Spend {stop - start}s")
return inner
@spend_time # 相当于 addFunction = spend_time(addFunction(*a, **b)) def addFunction(*a, **b): sums = 0 for number in a: sums += number print(sums) time.sleep(0.2)
addFunction(1,2,3,4,5) # 相当于 addFunction = spend_time(addFunction(1,2,3,4,5)) # addFunction被当作实参传到spend_time的function中 # (1,2,3,4,5)被当作是spend_time的内嵌函数inner的实参 # 所以实际上函数是在inner内执行 # 表面上function(*x, **y) 实际上是 addFunction(*a, **b) # 也就是说一旦function不接受这些实参的话,比如👉 function() # 那么虽然执行了addFunction(1,2,3,4,5)但真正执行的是addFunction() 运行结果 15 Spend 0.20099997520446777s
|