問題一覧に戻る
上級高度な機能
問題97: 引数を持つデコレータ
引数を持つデコレータは、デコレータファクトリーと呼ばれる関数を使って実装します。外側の関数がパラメータを受け取り、実際のデコレータを返します。これにより、デコレータの動作をパラメータで制御できるようになり、より柔軟な装飾が可能になります。
# 引数を持つデコレータ
def repeat(times):
def decorator(func):
def wrapper(*args):
for _ in range():
func(*args)
return wrapper
return
# パラメータ化されたデコレータを使用
@repeat()
def say_hello(name):
print(f"Hello, {name}!")
# 関数を呼び出し
say_hello("Alice")