【发布时间】:2021-07-25 03:37:08
【问题描述】:
最近,我开始更广泛地使用装饰器。对于一个项目,我需要不同的装饰器,如下图所示:
def param_check(fn=None, arg1=None, arg2=None):
def deco(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
#this is the only part that really changes
result = func(arg1, arg2)
return fn(result, *args, **kwargs)
return wrapper
if callable(fn): return deco(fn)
return deco
def func(arg1, arg2):
...do something...
.
.
...return something
但是,由于这是大量重复的代码,我想知道构建一个只接受一个函数然后返回一个新装饰器的包装函数的最 Pythonic 方式是什么?我尝试了几种方法,但都没有成功。我想知道是否有人知道如何做到这一点。
【问题讨论】: