Python 带有参数的元装饰器,在显式函数中定义
我想要一个显式的替代品来代替一个常见的decorator习惯用法 有一个聪明的单行装饰器,多年来在许多代码库中都没有解释:Python 带有参数的元装饰器,在显式函数中定义,python,decorator,python-decorators,idioms,Python,Decorator,Python Decorators,Idioms,我想要一个显式的替代品来代替一个常见的decorator习惯用法 有一个聪明的单行装饰器,多年来在许多代码库中都没有解释: decorator\u with\u args=lambda decorator:lambda*args,**kwargs:lambda func:decorator(func,*args,**kwargs) 我的问题恰恰是:它没有解释它的功能,有许多未命名的运动部件,不明显,缺乏表现力 就连2005年彼得·亨特(Peter Hunt)的研究报告也没有提供任何线索,说明这
decorator\u with\u args=lambda decorator:lambda*args,**kwargs:lambda func:decorator(func,*args,**kwargs)
我的问题恰恰是:它没有解释它的功能,有许多未命名的运动部件,不明显,缺乏表现力
就连2005年彼得·亨特(Peter Hunt)的研究报告也没有提供任何线索,说明这项技术在内部做了什么,也没有给出它的部件名称
我希望看到一个更具python风格、更明确、更富有表现力的替换品,其组成部分易于理解。因为我不太清楚原作的细节是如何运作的,我可能有以下错误:
导入工具
带参数的def decorator_(decorator):
“”“包装装饰程序,允许它接受任意参数。”“”
@functools.wrapps(装饰器)
def包装(*args,**kwargs):
“”“接受任意参数的结果修饰符。”“”
定义函数(func):
“”“使用参数调用原始装饰程序。”“”
返回装饰符(func、*args、**kwargs)
返回函数
返回包装器
请为这些部件提供更好的名称,并指出任何缺陷(即与原始部件不同的行为)