Pythonを実行中

\.問題点:Python venv

参照 :
cd mon_projet

python -m venv mon_venv

source mon_venv/bin/activate

# Sur windows
mon_venv\Scripts\activate

deactivate

インストール要件

pip install -r requirements.txt

PythonでのGoFのデザインパターン

GoFのデザインパターンは、『Design Patterns: Elements of Reusable Object-Oriented Software』という書籍で説明された23のデザインパターンのセットです。

以下はGoFのデザインパターンの一覧です

名前

説明

ファクトリーメソッド

具体的にインスタンス化するクラスを指定せずにオブジェクトを作成する。

�抽象ファクトリー

具体的なクラスを指定せずに、関連または依存するオブジェクトのファミリーを作成する。

ビルダー

複雑なオブジェクトの構築をその表現から分離し、同じ構築プロセスで異なる表現を作成できるようにします。

プロトタイプ

既存のプロトタイプをコピーして新しいオブジェクトを作成する

シングルトン

クラスのインスタンス化を1つのオブジェクトに制限します。

アダプター

クラスのインターフェイスをクライアントが期待する別のインターフェイスに変換します。

橋

抽象をその実装から切り離し、両者が独立して変化できるようにする。

複合

オブジェクトをツリー構造に組み合わせて、部分-全体の階層を表現します。

デコレーター

動的にオブジェクトに追加の責任を付ける。

ファサード

サブシステム内のインターフェースのセットに対して、統一されたインターフェースを提供します。

フライウェイト

軽量オブジェクトの作成と使用のコストを削減します。

プロキシ

別のオブジェクトへのアクセスを制御するために、そのオブジェクトの代替またはプレースホルダーを提供します。

責任の連鎖

複数のオブジェクトが要求を処理できるようにします。

コマンド

リクエストをオブジェクトにカプセル化し、これにより、異なるリクエスト、キュー、またはログを持つクライアントをパラメータ化し、元に戻せる操作をサポートします。

通訳

言語の文法の表現を与え、その表現を使用してその言語の文を解釈する。

イテレータ

集約オブジェクトの要素を、内部表現を公開することなく順に巡回する手段を提供する。

調停者

オブジェクト間の複雑な依存関係を減らし、オブジェクトが仲介者オブジェクトを通じてのみ通信できるようにする。

メメント

オブジェクトをその前の状態に戻す機能を提供します(カプセル化を侵害せずに)。

観察する

1対多の依存関係をオブジェクト間に定義し、オブジェクトの状態が変化すると、そのすべての依存先が通知され、自動的に更新されます。

状態

オブジェクトが内部状態が変わったときに振る舞いを変更できるようにする。

戦略

アルゴリズムの一族を定義し、それぞれをカプセル化して交換可能にする。

テンプレートメソッド

アルゴリズムのスケルトンをメソッド内で定義し、いくつかの手順をサブクラスに委譲する。

�訪問者

オブジェクト構造に対して新しい操作を定義し、オブジェクトのクラスを変更せずに実行することができます。

関数型プログラミング

図書館

URL

説明

PyMonad

https://github.com/jasondelaat/pymonad

PyMonadは、HaskellやF#などのプログラミング言語に基づいたPythonでのモナディックデータ構造の実装であり、関数型プログラミングで最も一般的に使用されるモナド型の実装を含みます。https://www.miguelfarrajota.com/2021/06/monads-in-python-with-pymonad/[記事]

PyFunctional

https://github.com/EntilZha/PyFunctional/

PyFunctionalは、純粋な関数とイテラブルを扱うためのツールを提供するPython用の関数型プログラミングライブラリです。

ツールズ

https://toolz.readthedocs.io/en/latest/

Toolz は、純粋な関数とイテラブルを扱うためのツールを提供する関数型プログラミング向けの Python ライブラリです。

Fn.py

https://github.com/kachayev/fn.py

Fn.pyは、純粋関数とイテラブルを扱うためのツールを提供する関数型プログラミング向けのPythonライブラリです。

ココナッツ

https://coconut-lang.org/

Coconut は Python に関数型プログラミングのためのいくつかの機能を追加し、パターンマッチングも含まれます。https://stackoverflow.com/questions/11909681/are-there-pattern-matching-functions-in-python-like-this[会話ソフ]

副作用

ループ

# impérative way
result = []
for i in inputs:
    x = f(g(i))
    result.append(x)

# idiomatic way
result = map(comp(f,g), inputs)

関連記事