Python で関数を部分的に適用する
Python では、すべての引数を指定しなくても後で呼び出せるように、関数に引数をバインドすると便利なことがよくあります。元の引数の。部分アプリケーションとして知られるこの手法は、コールバックの定義やクロージャの操作など、さまざまなシナリオで便利です。
部分アプリケーション用の functools.partial
Python は functools を提供します。引数を部分的に適用するための .partial 関数。 functools.partial は、関数とそれにバインドされる一連の引数を受け取り、部分的に適用された関数を表す新しい呼び出し可能オブジェクトを返します。元の関数はバインドされた引数とともに「フリーズ」されているため、これらの引数を明示的に指定せずに後で呼び出すことができます。
次の例を考えてみましょう。
import functools def add(x, y): return x + y add_5 = functools.partial(add, 5) assert add_5(3) == 8
この例では、最初の引数を 5 に固定して add 関数を部分的に適用することで、add_5 という関数を作成します。後で、単一の引数を指定して add_5 を呼び出して加算を実行できます。これは次と同等です。 call add(5, argument).
使用法と等価性
上記のコードはラムダ関数の使用に似ています。
print_hello = lambda *a, **kw: sys.stdout.write("Hello world\n", *a, **kw)
ただしfunctools.partial はオブジェクト指向のアプローチを提供し、部分的に適用されたオブジェクトの変更と検査を容易にします。 function.
部分的なアプリケーションを利用することで、コードの可読性を向上させ、偶発的な即時関数評価を回避し、クロージャでの遅延バインディングによって引き起こされる問題を軽減できます。これは、Python コーディングの武器に柔軟性を加える多用途のテクニックです。
以上がfunctools.partial は Python での関数呼び出しをどのように簡素化できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。