質問
Pythonのデコレータについて解説した記事(下記参照)を読んでいるのですが、指定した関数を2度実行するもの(@twice)が例として出てきました (コード1)。
これを改良して、任意の回数繰り返すようにできないかと試してみたのですが上手くいきません (コード2)。
どうすればよいのでしょうか? もしくは、このようなことはデコレータではできないのでしょうか?
コード1
Python
1def twice(func): 2 # A decorator to call a function twice. 3 def wrapper(*args, **kwargs): 4 return func(*args, **kwargs) * 2 5 6 return wrapper 7 8@twice 9def add(x, y): 10 return x + y 11 12 13print("add:", add(1, 3)) 14> add: 8
コード2
Python
1def twice(func, n): 2 # A decorator to call a function n times. 3 def wrapper(*args, **kwargs): 4 return func(*args, **kwargs) * n 5 6 return wrapper 7 8@twice(4) 9def add(x, y): 10 return x + y 11 12 13print("add:", add(1, 3)) 14> TypeError: twice() missing 1 required positional argument: 'n' 15
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。