赞
踩
对无参函数进行装饰 def total_time(func): def wrapper(): start = datetime.datetime.now() func() stop = datetime.datetime.now() time = (stop - start).seconds print(time) return wrapper @total_time def pri(): print("计算程序执行时间") if __name__ == "__main__": pri() # #原理: 1.执行函数pri()时,会先调用total_time函数,将被装饰的函数pri当做入参传入(此时未pri) 2.在执行total_time函数时,直接把内部函数wrapper返回了,同时把它赋值给pri 3.(重点)此时的pri已经不是未加装饰时的pri了,而是指向了total_time.wrapper函数地址了 4.接下来,执行新pri函数,即total_time.wrapper函数,先start赋值,然后调用原来的pri(),该处的pri就是通过装饰传进来的参数pri
对有参函数进行装饰
def total_time(func):
def wrapper(*args,**kwargs):
start = datetime.datetime.now()
func(*args,**kwargs)
sto
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。