Python中的部分装饰器

Python中的部分装饰器

 1 #装饰器: 为原函数添加新功能而不改变原函数名,而且看起来简洁
 2 
 3 import time
 4 
 5 def showtime(f):
 6     def wrapper():
 7         start = time.time()
 8         f()
 9         end = time.time()
10         print("Spend total time: %s" % (end - start))
11     return wrapper
12 
13 @showtime   #func1 = showtime(func1)
14 def func1():
15     print("func1...")
16     time.sleep(2)
17 
18 @showtime   #func2 = showtime(func2)
19 def func2():
20     print("func2...")
21     time.sleep(3)
22 
23 func1()
24 func2()

执行效果如下:

func1...
Spend total time: 2.0004794597625732
func2...
Spend total time: 3.000804901123047

 

装饰器的进一步使用

 1 # 累加器_功能函数加参数,并且为装饰器也加上参数
 2 
 3 import time
 4 
 5 def logger(flag):
 6     def showtime(func):
 7         def wrapper(*tps):
 8             start = time.time()
 9             func(*tps)
10             stop = time.time()
11             print("You spend time: %s"%(stop - start))
12             if flag == 'true':
13                 print("打印日志")
14         return wrapper
15     return showtime
16 
17 @logger('true')
18 def add(*tuples):
19     sums = 0
20     for i in tuples:
21         sums += i
22     print("Total sum: %s"%sums)
23     time.sleep(1)
24 
25 add(1,2,3,4,5)

执行效果如下:

Total sum: 15
You spend time: 1.0005431175231934
打印日志

posted @ 2018-03-05 13:11  走路爱走神  阅读(89)  评论(0)    收藏  举报