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)
以上就是python带参数装饰器的写法,希望能对大家有所帮助,更多知识尽在python学习网。
网站栏目:创新互联Python教程:python带参数的装饰器怎么写?
文章转载:http://www.csdahua.cn/qtweb/news37/393787.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网