您的位置:首页 > 编程语言 > Python开发

python 装饰器从放弃到玩转(高级)

2017-02-14 11:30 337 查看
前面说了
计算原有函数的执行时间

利用装饰器如何给原有函数传参

利用装饰器如何接受原有函数的返回值

最后我们说下如何给装饰器传值
举个例子,有的函数我需要统计函数的运行时间,有的函数我需要统计他开始执行的时间,有人会说可以写多个装饰器,这个方法可以,但是这种方法会不会让我们的代码闲的过于臃肿

假设test01需要计算函数的运行时间

看代码
def record_time(key):
def out_warppper(func):
def warpper(*agrs,**Kwagrs):
start_time = time.time()
a = func(*agrs,**Kwagrs)
end_time = time.time()
print "总共用时:" + str(int(end_time) - int(start_time))
return a
return warpper

return out_warpper

@record_time("test01")
def test01(name=name):
time.sleep(3)
print "test"
return name

r = test01("tets01")
print r

解释
@record_time("test01")== test01 = record_time("test01") == out_warpper(test01) == warpper

test01("test01") == warpper("test01")

执行warpper函数

执行原test01函数

可以看到不管是接受原函数的返回值,接受函数传参,装饰器接受参数,只要你真正理解了装饰器的调用原理及方式,都不难实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python