python 一个函数添加多个装饰器

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值