Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有参数的元装饰器,在显式函数中定义_Python_Decorator_Python Decorators_Idioms - Fatal编程技术网

Python 带有参数的元装饰器,在显式函数中定义

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习惯用法

有一个聪明的单行装饰器,多年来在许多代码库中都没有解释:

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)
返回函数
返回包装器
请为这些部件提供更好的名称,并指出任何缺陷(即与原始部件不同的行为)