リストまたは辞書として渡されるすべてのパラメーターを使用して、元の関数の代わりに代替関数が呼び出されるように、任意の python 関数を装飾する方法を探しています。
より正確には、次のようなものです (f は任意の関数であり、replacement_f はリストと辞書を取ります):
def replace_func(f, replacement_f):
def new_f(*args, **kwargs):
replacement_f(args, kwargs)
return new_f
ただし、replacement_f
内部を参照することはできませんnew_f
。また、変数引数リストと可変引数リストを使用しているため、別のパラメーターのデフォルトとしてreplacement_f
を渡すという標準的なトリックを使用することはできません。new_f
*args
**kwargs
元の関数が呼び出される場所は変更できず、位置パラメーターと名前付きパラメーターの両方を受け入れます。
あまり明確ではないのではないかと思いますが、必要に応じて明確にしていただければ幸いです。
ありがとう