#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|
Python装饰器
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 这是关于Python装饰器系列文章的第二篇,第一篇在这里如何正确地实现 Python 装饰器 上一篇博文中,我列出...