text 接收可选参数的装饰器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text 接收可选参数的装饰器相关的知识,希望对你有一定的参考价值。

>>> def optional_arguments_decorator(real_decorator):
...     def decorator(func=None, **kwargs):
            ''' 接收可选参数的装饰器 '''
...         def decorated(func):
                ''' 普通装饰器 '''
...             def wrapper(*a, **kw):
...                 return real_decorator(func, a, kw, **kwargs)
...             return wrapper
...         if func is None:
...             return decorated  # 返回普通装饰器
...         return decorated(func)  # 返回被普通装饰器装饰后的函数
...     return decorator
...
>>> @optional_arguments_decorator
... def decorate(func, args, kwargs, prefix='Decorated'):
...     return '%s: %s' % (prefix, func(*args, **kwargs))
...
>>> @decorate
... def test(a, b):
... return a + b
...
>>> test(13, 17)
'Decorated: 30'
>>> test = decorate(test, prefix='Decorated again')
>>> test(13, 17)
'Decorated again: Decorated: 30'

以上是关于text 接收可选参数的装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python进阶之装饰器之2.定义一个可接受参数的装饰器如何定义一个属性可由用户修改的装饰器定义一个能接受可选参数的装饰器

如何使用可选参数构建装饰器? [复制]

装饰器

装饰器的应用-装饰器带参数和不带参数

装饰器

Python装饰器实现带参数和不带参数