- 装饰器本身是一个函数,作用是对另一个函数进行加工处理
- 装饰器的参数是函数,返回值也是函数
- 例如我想记录一个函数的运行用时
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author:Arthur
from functools import wraps
from time import sleep
from datetime import datetime
#这是一个装饰器函数
def run_time(func): ## func作为一个需要运行用时的函数
@wraps(func) ## @wraps这里确保返回后的函数名也是func
def wraper(*args, **kwargs): ## 匹配所有不确定参数
start_time = datetime.now() ## 运行函数前的时间
func(*args, **kwargs) ## 运行
end_time = datetime.now() ## 运行后的时间
print("运行耗时:{}秒".format((end_time-start_time).seconds))
return wraper ## 返回处理后的函数
#不调用装饰器
def sleep_time1(n):
print('好困啊,让我再{}秒钟'.format(n))
sleep(n)
#调用装饰器
@run_time
def sleep_time2(n):
print('好困啊,让我睡{}秒钟'.format(n))
sleep(n)
n = 3
print("不带装饰器的运行结果:")
sleep_time1(n)
print("-"*20)
print("带装饰器的运行结果:")
sleep_time2(n)
不带装饰器的运行结果:
好困啊,让我再3秒钟
--------------------
带装饰器的运行结果:
好困啊,让我睡3秒钟
运行耗时:3秒
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。