#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 装饰器 上一篇博文中,我列出...