使用python怎么实现一个带参数的装饰器

使用python怎么实现一个带参数的装饰器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

python主要应用领域有哪些

1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为Python开发。3.人工智能应用,基于大数据分析和深度学习而发展出来的人工智能本质上已经无法离开python。4、系统运维工程项目,自动化运维的标配就是python+Django/flask。5、金融理财分析,量化交易,金融分析。6、大数据分析。

1、装饰器说明

装饰器看上去并没有任何参数(使用 @ 时被装饰的方法作为隐式参数传递给装饰器)。但是,有时候让装饰器自带一些参数,可以提供更灵活的应用。

2、实例

我们改写 requires_ints,使其还可以限制被装饰函数的参数的数量:

from functools import wraps
 
def requires_ints(count=0):
    
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            values = [i for i in kwargs.values()]
            args_list = list(args) + [i for i in kwargs.values()]
            
            if count == 0:
                # Not limit
                pass
            elif len(args_list) > count:
                raise Exception(f'The number of arguments cannot more than {count}')
            
            for arg in args_list:
                if not isinstance(arg, int):
                    raise TypeError('Only accept integers.')
            return func(*args, **kwargs)
 
        return wrapper
    return decorator
 
 
@requires_ints(5)
def add(*args):
    '''Return the sum of all arguments'''
    return sum(args)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对亿速云的支持。