2
私は関数デコレータを使用しようとしましたが、この例では私のためにうまくいきません。解決法を教えてください。Python関数デコレータエラー
def multiply_by_three(f):
def decorator():
return f() * 3
return decorator
@multiply_by_three
def add(a, b):
return a + b
print(add(1,2)) # returns (1 + 2) * 3 = 9
通訳を印刷エラー:「例外TypeError:デコレータは、()0位置引数を取りますが、2は、与えられた」あなたはデコレータを使用する場合
それは真実を語っています。あなたの 'decorator'関数は引数を取らず、' add(1,2) 'を呼び出すときに、' decorator(1,2) 'を呼び出します。これは' multiply_by_three'メソッドから返すものです。また、( 'multiply_by_three'は実際のデコレータであるので)議論することを非常に混乱させるので、それを"デコレータ "と呼ぶことは避けてください。 – larsks