引数を Python 関数にバインドする方法
Python では、後の実行のために引数を関数にバインドする必要がある状況に遭遇することがあります。追加の引数は必要ありません。次の例を考えてみましょう。
def add(x, y): return x + y add_5 = magic_function(add, 5) assert add_5(3) == 8
このシナリオでは、引数 5 を add 関数にバインドできる magic_function を決定する必要があります。
解決策は、functools.partial モジュールを使用することにあります。 :
import functools add_5 = functools.partial(add, 5) # Bind '5' as the first argument to 'add' assert add_5(3) == 8 # Call 'add_5' with '3' as the second argument
functools.partial は、元の関数を事前設定された引数でラップする呼び出し可能オブジェクトを効果的に作成します。これにより、固定引数を明示的に指定しなくても、後で関数を実行できます。
次のコードは、ラムダ式を使用した同等のアプローチを示しています。
print_hello = lambda *a, **kw: sys.stdout.write("Hello world\n", *a, **kw)
ここで、print_hello の引数は次のとおりです。 sys.stdout.write に与えられたものとして扱われるため、実行中に柔軟な引数を渡すことができます。
以上が「functools.partial」を使用して Python 関数の引数を事前設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。