使用python怎么实现一个带参数的装饰器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联是专业的高青网站建设公司,高青接单;提供成都做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行高青网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
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)
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。