我设法编写了一个带有参数的装饰器,但我对两个实际的装饰器具有相同的代码行这一事实感到困扰:
def wrapper(*args, **kwargs):
r = fn(*args)
并且想知道是否有某种方法可以解决这种违反 DRY 的问题
def fix(double):
def outer(fn):
if double:
def wrapper(*args, **kwargs):
r = fn(*args)
return 2 * r
return wrapper
else:
def wrapper(*args, **kwargs):
r = fn(*args)
return r
return wrapper
return outer