Python 独自の functools
モジュールは、関数型プログラミング用のツール関数を多数提供します。コードをより簡潔で読みやすくし、関数プログラミング用の高次関数と基本ツールを提供します。この記事では、functools
モジュールのいくつかの一般的な関数を紹介し、コード例を示します。
partial
Functionpartial
関数は、関数を部分的に適用するために使用されます。つまり、関数の一部のパラメーターを修正します。関数を呼び出して新しい関数を返します。サンプル コードは次のとおりです。
from functools import partial def multiply(x, y): return x * y double = partial(multiply, 2) triple = partial(multiply, 3) print(double(4)) # 输出8 print(triple(4)) # 输出12
上記のコードでは、partial
関数は、multiply
関数の最初のパラメータを 2 または 3 に固定し、新しい値を返します。関数double
および triple
。 double
関数が呼び出されると、実際には multiply(2, 4)
が呼び出され、結果 8 が返されます。
reduce
関数reduce
関数は、シーケンス内の要素に対して累積計算を実行し、単一の結果。この関数は、from functools import reduce
を介してインポートする必要があります。サンプル コードは次のとおりです。
from functools import reduce def add(x, y): return x + y numbers = [1, 2, 3, 4, 5] result = reduce(add, numbers) print(result) # 输出15
上記のコードでは、reduce
関数が add
関数をシーケンス numbers## の要素に適用します。 #、左から右へ順番に累積加算し、最終結果の15を返します。
Function
map関数は、シーケンス内の各要素に関数を適用し、新しいシーケンス。サンプル コードは次のとおりです。
def square(x): return x ** 2 numbers = [1, 2, 3, 4, 5] squared_numbers = list(map(square, numbers)) print(squared_numbers) # 输出[1, 4, 9, 16, 25]
map 関数が
square 関数をシーケンス
numbers## の各要素に適用します。 # そして新しいシーケンス squared_numbers
を返します。
この関数は、シーケンス内の各要素に条件判定関数を適用するために使用されます。条件を満たす新しい要素のシーケンスを返します。サンプル コードは次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:python;toolbar:false;'>def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(is_even, numbers))
print(even_numbers) # 输出[2, 4]</pre><div class="contentsignin">ログイン後にコピー</div></div> 上記のコードでは、filter<p> 関数が <code>is_even
関数をシーケンス numbers## の各要素に適用します。 # そして、条件を満たす要素のみを含む新しいシーケンス
even_numbers を返します。
functools
partial、
reduce、
map、
filter は、
functools モジュールでより一般的に使用される関数です。 . 実際のプロジェクトに適用することができます。
以上がPython 3.x で関数プログラミングに functools モジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。