知行编程网知行编程网  2023-01-09 03:30 知行编程网 隐藏边栏  1 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python带参数的装饰器怎么写?的相关知识,希望可以帮到处于编程学习途中的小伙伴

如何在python中编写带参数的装饰器?


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学习网。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享