- 装饰器是AOP编程思想,给主体函数增加功能,又不让代码入侵到主体函数中,实现高内聚,低耦合。
- 参数有两种,一种是功能函数带参数、另外一种是装饰器函数带参数,如果装饰功能部分代码也需要参数的话,可以在原来的两层函数外面再加一层,专门用来接收参数。
- 下面我们通过两个小例子来学习
#功能函数带参数;
#实现一个功能函数为加法器,传入N位数字相加;装饰器-计算函数运行时间
import time
def show_time(f):
def inner(*x):
start = time.time()
f(*x)
end = time.time()
print('speed %s'%(end-start))
return inner
@show_time
def add(*a):
sum = 0
for i in a:
sum += i
print(sum)
time.sleep(1)
add(1,2,3,5,6)
#装饰器函数带参数;
#实现一个功能函数为加法器,传入N位数字相加;装饰器-计算函数运行时间。另外增加一个打印日志的功能,实现功能输出日志,部分功能函数不需要输出日志
#bar调用的时候打印日志,add调用的时候不打印日志
import time
def logger(flag=''):
def show_time(f):
def inner(*x):
start = time.time()
print(start)
f(*x)
end = time.time()
print(end)
print('speed %s'%(end-start))
if flag =='True':
print('日志记录')
return inner
return show_time
@logger('True') #bar = show_time(bar)
def bar():
print('bar......')
time.sleep(2)
@logger()
def add(*a):
sum = 0
for i in a:
sum += i
print(sum)
time.sleep(1)
# add(1,2,3,5,6)
bar()
原文地址:http://www.cnblogs.com/xwltest/p/16837601.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性