标签:rgs foo 返回 扩展 执行 port call 参数 name
下面写个记录时间的装饰器
import time def TimeRecord(fun): def wrag(*args,**kwargs): record1 = time.time() c = fun(*args,**kwargs) record2 = time.time() print(record2-record1) return c return wrag @TimeRecord def task(): time.sleep(2) task() # 2.0004897117614746
再来个带参数的装饰器
from time import ctime, sleep def timefun_arg(pre="hello"): def timefun(func): def wrapped_func(*args,**kwargs): print("%s called at %s %s" % (func.__name__, ctime(), pre)) return func(*args,**kwargs) return wrapped_func return timefun # 下面的装饰过程 # 1. 调用timefun_arg("itcast") # 2. 将步骤1得到的返回值,即time_fun返回, 然后time_fun(foo) # 3. 将time_fun(foo)的结果返回,即wrapped_func # 4. 让foo = wrapped_fun,即foo现在指向wrapped_func @timefun_arg("itcast") def foo(): print("I am foo") @timefun_arg("python") def too(): print("I am too") foo() sleep(2) foo() too() sleep(2) too()
标签:rgs foo 返回 扩展 执行 port call 参数 name
原文地址:https://www.cnblogs.com/Yrind/p/10736402.html