尝试了解执行流程的新手总数,请看以下代码:
from datetime import datetime
from time import *
def time_decorator(function,a=0):
a +=1
print(a)
def wrapper(*args,**kwargs):
t1= time()
result = function(*args,**kwargs)
t2 = time() - t1
print("elapsed:", t2)
return result
a +=2
print(a)
return wrapper
@time_decorator
def add(x, y=10):
sleep(2)
return x + y
print (add(10))
输出如下:
1
3
elapsed: 2.0001702308654785
20
1
3
我的问题是,为什么“ a”的最后两个值在最后两行中都相同???我希望将其再增加两个??……我不理解翻译的执行流程,请帮助!!
答案 0 :(得分:0)
装饰器只是函数应用程序的一种奇特形式。
Start()
等同于
@time_decorator
def add(x, y=10):
sleep(2)
return x + y
涉及变量def add(x, y=10):
sleep(2)
return x + y
add = time_decorator(add)
的输出仅在调用a
时发生,而不是在调用函数time_decorator
时发生。