#Python装饰器(decorator)
#类似java中的装饰设计模式, 用来增强原有的功能
#实际原理还是使用到闭包函数
import time
def timmer(func):
def wrapper():
start_time = time.time()
func()
end_time = time.time()
print("运行时间是 %s 秒" %(end_time - start_time))
return wrapper
@timmer
def i_can_sleep():
time.sleep(3)
i_can_sleep() #运行时间是 3.0001325607299805 秒
#对于装饰器需要被装饰方法的参数的写法如下
def tips(func):
def nei(a, b):
print('start', end='|')
func(a, b)
print('stop', end='|')
return nei
@tips
def add(a, b):
print(a + b, end='|')
add(4, 5) #start|9|stop|
#对于直接传递参数给装饰器的写法
def new_tips(args):
print(args, end='|')
def tips(func):
print(func.__name__)
def nei(a, b):
print('start', end='|')
func(a, b)
print('stop', end='|')
return nei
return tips
@new_tips('new_add') #直接在装饰器上添加参数
def new_add(a, b):
print(a + b, end='|')
new_add(1, 2) #new_add|start|3|stop|
网友评论