Pythonにおける関数型プログラミング


In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. (Wikipedia)


機能的プログラミングの必要性

  • 機能プログラミングの使用によって、データと論理を別々に分離することができる懸念の分離を提供します.したがって、コードが明確になり、開発者に理解しやすい.
  • 関数型プログラミングは、(あなた自身を繰り返さない)原則に従います.
  • 機能的プログラミング実行に続くコードはメモリ効率がよい.
  • 機能的プログラミングを実装するコードベースも、拡張して、維持するのが簡単です.
  • 純粋関数

  • 関数プログラミングの重要概念の一つは純粋関数の使用である.
  • 関数は、
  • 1 )同じ入力を与えた場合、この関数は常に同じ出力を返します.
    2)関数は副作用を生じてはならない.

  • 副作用は、関数が外部の世界に影響を与えるということです.
  • 変数のデータを変更すると、印刷出力は関数の副作用の例として考えられる.
  • 次の簡単な例を考えてみましょう.

    関数の広場は、常に与えられた数の正方形だけを返し、外の世界で何も変更されません.
    このタイプの関数は宣言関数とも呼ばれます

    注意:

  • しかし、技術的には、コードの状態を変更する必要があるかもしれないので、どこでも純粋な機能を使用することはできません.
  • ただし、可能な限り多くの場所として純粋な機能を使用することは良い練習です.
  • そして、ここでの事実は、バグとエラーに直面する可能性が高いということです.
  • Pythonは組み込みPythonで役に立つ便利な関数を提供します.
  • Pythonでのpure関数

  • map ()
  • filter ()
  • zip ()
  • reduce ()
  • 1 ) MAP ()

  • map ()は、関数とiterableの2つの引数を受け取ります.
  • 上の関数の例を考えて、map ()関数を使用して、関数を数値のリストのように与えられたiterableにすばやく適用することができます.

  • 出力:
    [4, 36, 100]
    
  • map ()関数の最も一般的で便利なユースケースは、ユーザから複数の未知の入力を受け取ることです.

  • 出力:
    Enter some numbers: 2 5 3 7 4
    Check your numbers: [2, 5, 3, 7, 4]
    

    2 ) filter ()

  • filter ()関数は、指定した関数に基づいて任意のiterableをフィルターします.
  • filter ()関数が与えられた条件を満たす項目だけをフィルタリングする次の例を考えてみましょうonly_even() 関数.

  • 出力:
    [2, 4, 6, 8, 10]
    

    3 ) zip ()

  • 2つのiterableを文字通りZIPにする必要がある場合、zip ()関数を使用します.
  • ZIP ()関数の中には、多くのiterableを追加できます.
  • つのiterableを使用して次の例を考えます.

  • 出力:
    [('Iron Man', 'Batman'), ('Spider-Man', 'Superman')]
    
  • zip ()関数は、対応するインデックス項目をタプル内でバインドし、リスト関数に挿入します( list ()関数として指定).
  • 4 ) reduce ()

  • reduce ()関数は、標準のPythonライブラリです.
  • reduce ()関数が与えられたリスト値を蓄積し、最終的な出力を出力する、次の例を考えます.

  • 出力:
    9
    
  • 他の関数とは異なり、reduce ()関数は三つの引数を受け付けます.
  • この例から、関数累積()が2つの引数acc and item を返す.
  • ここで、reduce ()関数は最初のACCとして最後の引数0を渡し、リストから最初の項目を渡します.次に、すべてのリスト項目が蓄積され、結果が表示されるまで、その合計を次のリスト項目のACCとして累積して渡します.
  • に沿ってコードと詳細を学ぶ.