私はなんとか引数を取るデコレータを書くことができましたが、両方の実際のデコレータが同じコード行を持っているという事実に悩まされています:
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