python 一个函数添加多个@装饰器
这里直接使用带参的装饰器。实现单个函数添加多个装饰器,其实只需要对装饰函数进行叠罗汉好就行,装饰函数执行的顺序是从底层往高层执行。
from functools import wraps
def info(arg): #装饰函数
def _info(func):
@wraps(func)
def wrapper(*args,**kwargs):
if arg=='len': #返回长度获取
ret = func(*args, **kwargs)
if ret:
c=len(ret[0])
print('等分长度:{} 拆分后列表长度:{}'.format(c,len(ret)))
else:
print('拆分列表为空')
elif arg=='time': #运行时间计算
start=time.time()
ret = func(*args, **kwargs)
end=time.time()
print('运行时间:{}'.format(end-start))
return ret
return wrapper
return _info
######
@info('time')
@info('len')
def clip_list(a,c):
"""
列表拆分
:param a:
:param c:
:return:
"""
clip_back=[]
if len(a)>c:
for i in range(int(len(a) / c)):
# print(i)
clip_a = a[c * i:c * (i + 1)]
clip_back.append(clip_a)
# print(clip_a)
# last
last = a[int(len(a) / c) * c:]
if last:
clip_back.append(last)
return clip_back
#
ip_list = ['192.168.1.{}'.format(n) for n in range(1, 25611)]
clip_list(ip_list,5)