Python-design-patterns-quick-guide
Pythonデザインパターン-はじめに
デザインパターンは、ソフトウェアまたはWebアプリケーションを作成するために開発者が使用するパターンを表すために使用されます。 これらのパターンは、要件分析に基づいて選択されます。 パターンは、問題の解決策、解決策を適用するタイミングと場所、および実装の結果を記述します。
設計パターンの構造
設計パターンの文書化は、使用されているテクノロジーとその方法により重点を置いた方法で維持されます。 次の図は、設計パターン文書の基本構造を説明しています。
パターン名
パターンを短く効果的な方法で説明します。
意図/動機
パターンの機能を説明します。
適用範囲
パターンが適用される状況のリストについて説明します。
参加者と結果
参加者には、デザインパターンに参加するクラスとオブジェクトが含まれ、パターンとともに存在する結果のリストが含まれます。
なぜPythonなのか
Pythonはオープンソースのスクリプト言語です。 さまざまなデザインパターンをサポートするライブラリがあります。 pythonの構文は理解しやすく、英語のキーワードを使用します。
Pythonは、以下で説明する設計パターンのリストのサポートを提供します。 これらの設計パターンは、このチュートリアル全体で使用されます-
- モデルビューコントローラーパターン
- シングルトンパターン
- 工場パターン
- ビルダーパターン
- プロトタイプパターン
- ファサードパターン
- コマンドパターン
- アダプターパターン
- プロトタイプパターン
- デコレータパターン
- プロキシパターン
- 責任の連鎖パターン
- オブザーバーパターン
- 状態パターン
- 戦略パターン
- テンプレートパターン
- フライウェイトパターン
- 抽象ファクトリーパターン
- オブジェクト指向パターン
デザインパターンを使用する利点
以下は、設計パターンのさまざまな利点です-
- パターンは、指定された問題に対して、開発者に試行済みのテスト済みソリューションの選択肢を提供します。
- すべてのデザインパターンは言語に依存しません。
- パターンは、コミュニケーションを実現し、適切なドキュメントを維持するのに役立ちます。
- プロジェクトの技術的リスクを軽減するための達成記録が含まれています。
- 設計パターンは非常に柔軟に使用でき、理解しやすいものです。
Pythonデザインパターン-要点
Pythonはオープンソースのスクリプト言語であり、高レベルで、解釈され、インタラクティブで、オブジェクト指向です。 読みやすいように設計されています。 Python言語の構文は理解しやすく、英語のキーワードを頻繁に使用します。
Python言語の機能
このセクションでは、Python言語のさまざまな機能について学習します。
解釈済み
Pythonは、実行時にインタープリターを使用して処理されます。 実行前にプログラムをコンパイルする必要はありません。 これは、PERLおよびPHPに似ています。
オブジェクト指向
Pythonは、オブジェクト指向のスタイルとデザインパターンに従います。 カプセル化、ポリモーフィズムなどのさまざまな機能を備えたクラス定義が含まれています。
ポータブル
Windowsオペレーティングシステムで記述されたPythonコード。Macオペレーティングシステムで使用できます。 コードは、要件に従って再利用および移植できます。
コーディングが簡単
Python構文は理解しやすく、コーディングも簡単です。 開発者なら誰でも、数時間以内にPythonの構文を理解できます。 Pythonは「プログラマーフレンドリー」と表現できます。
拡張可能
必要に応じて、ユーザーはPythonコードの一部をC言語で書くこともできます。 C ++などのさまざまな言語のソースコードにPythonコードを配置することもできます。 これにより、Pythonは拡張可能な言語になります。
重要なポイント
Pythonプログラミング言語に関連する次の重要な点を考慮してください-
- 機能的および構造化されたプログラミングメソッドと、オブジェクト指向プログラミングメソッドが含まれています。
- スクリプト言語またはプログラミング言語として使用できます。
- 自動ガベージコレクションが含まれます。
- 高レベルの動的データ型が含まれており、さまざまな動的型チェックをサポートしています。
- Pythonには、C、C ++、およびJavaなどの言語との統合機能が含まれています。
システムにPython言語をダウンロードする方法は?
システムにPython言語をダウンロードするには、このリンクをたどってください-
https://www.python.org/downloads/
Windows、MacOS、Linuxディストリビューションなどのさまざまなオペレーティングシステム用のパッケージが含まれています。
Pythonの重要なツール
このセクションでは、Pythonのいくつかの重要なツールについて簡単に学習します。
Python文字列
文字列の基本的な宣言は次のとおりです-
Pythonリスト
Pythonのリストは、コンマで区切られ、角括弧([])で囲まれた複合データ型として宣言できます。
Pythonタプル
タプルはPythonの動的データ型であり、コンマで区切られた多数の値で構成されます。 タプルは括弧で囲まれています。
Python辞書
Python辞書は、ハッシュテーブルの一種です。 辞書キーには、ほとんどすべてのPythonのデータ型を使用できます。 データ型は通常、数値または文字列です。
Pythonのデザインパターンを構成するものは何ですか?
Pythonは、次のパラメータを使用して設計パターンを構成するのに役立ちます-
- パターン名
- 意図
- エイリアス
- 動機
- 問題
- 溶液
- 構造
- 参加者
- 制約
- サンプルコード
モデルビューコントローラーパターン
Model View Controllerは、最も一般的に使用される設計パターンです。 開発者は、この設計パターンを簡単に実装できます。
以下は、Model View Controllerの基本的なアーキテクチャです-
構造がどのように機能するかを見てみましょう。
モデル
データベースと対話する純粋なアプリケーションロジックで構成されます。 エンドユーザーにデータを表すためのすべての情報が含まれています。
View
ビューは、エンドユーザーと対話するHTMLファイルを表します。 ユーザーに対するモデルのデータを表します。
コントローラ
ビューとモデルの間の媒介として機能します。 ビューによってトリガーされるイベントをリッスンし、同じモデルを照会します。
Pythonコード
「Person」という基本的なオブジェクトを考えて、MVCデザインパターンを作成してみましょう。
データベース内のPersonテーブルのすべてのレコードを取得するメソッドを呼び出します。 レコードはJSON形式で表示されます。
View
モデル内で取得されたすべてのレコードが表示されます。 ビューはモデルと相互作用しません。コントローラーがこの作業を行います(モデルおよびビューとの通信)。
コントローラ
コントローラーは、エンドユーザーに表示されるすべてのレコードを取得する* getAll()*メソッドを介してモデルと対話します。
Pythonデザインパターン-シングルトン
このパターンは、クラスのインスタンス化を1つのオブジェクトに制限します。 これは作成パターンの一種であり、1つのクラスのみがメソッドと指定されたオブジェクトを作成します。
作成されたインスタンスへのグローバルアクセスポイントを提供します。
シングルトンクラスを実装する方法
次のプログラムは、複数回作成されたインスタンスを出力するシングルトンクラスの実装を示しています。
出力
上記のプログラムは、次の出力を生成します-
作成されるインスタンスの数は同じであり、出力にリストされるオブジェクトに違いはありません。
Pythonデザインパターン-工場
ファクトリパターンは、作成パターンリストカテゴリに分類されます。 オブジェクトを作成する最良の方法の1つを提供します。 ファクトリパターンでは、クライアントにロジックを公開せずに、共通インターフェイスを使用して新しく作成されたオブジェクトを参照せずにオブジェクトが作成されます。
ファクトリパターンは、ファクトリメソッドを使用してPythonで実装されます。 ユーザーがメソッドを呼び出し、ストリングを渡し、新しいオブジェクトとしての戻り値がファクトリーメソッドを介して実装されるようにします。 ファクトリメソッドで使用されるオブジェクトのタイプは、メソッドを介して渡される文字列によって決定されます。
以下の例では、すべてのメソッドにパラメーターとしてオブジェクトが含まれています。これはファクトリーメソッドを通じて実装されます。
ファクトリパターンを実装する方法
ファクトリパターンを実装する方法を見てみましょう。
ボタンクラスは、htmlタグと関連するhtmlページの作成に役立ちます。 クライアントはコードのロジックにアクセスできず、出力はhtmlページの作成を表します。
出力
説明
Pythonコードには、値を指定するhtmlタグのロジックが含まれています。 エンドユーザーは、Pythonコードによって作成されたHTMLファイルを見ることができます。
Pythonデザインパターン-ビルダー
Builderパターンは、単純なオブジェクトを使用して複雑なオブジェクトを構築するのに役立ち、アルゴリズムのアプローチを使用するユニークなデザインパターンです。 このデザインパターンは、作成パターンのカテゴリに分類されます。 この設計パターンでは、ビルダークラスが段階的な手順で最終オブジェクトを構築します。 このビルダーは、他のオブジェクトから独立しています。
Builderパターンの利点
- クラスによって作成された指定されたオブジェクトの構築と表現の間の明確な分離とユニークなレイヤーを提供します。
- 作成されたパターンの構築プロセスをより適切に制御できます。
- オブジェクトの内部表現を変更する完璧なシナリオを提供します。
ビルダーパターンの実装方法
このセクションでは、ビルダーパターンを実装する方法を学習します。
出力
上記のプログラムは、次の出力を生成します-
Pythonデザインパターン-プロトタイプ
プロトタイプ設計パターンは、クラスによって作成されたインスタンスの複雑さを隠すのに役立ちます。 既存のオブジェクトの概念は、ゼロから作成される新しいオブジェクトの概念とは異なります。
必要に応じて、新しくコピーされたオブジェクトのプロパティにいくつかの変更がある場合があります。 このアプローチは、製品の開発に費やす時間とリソースを節約します。
プロトタイプパターンの実装方法
プロトタイプパターンの実装方法を見てみましょう。
出力
上記のプログラムは、次の出力を生成します-
出力は、既存のオブジェクトを使用して新しいオブジェクトを作成するのに役立ち、上記の出力で明確に表示されます。
Pythonデザインパターン-ファサード
ファサードのデザインパターンは、サブシステム内の一連のインターフェイスへの統合インターフェイスを提供します。 任意のサブシステムが使用できる高レベルのインターフェースを定義します。
ファサードクラスは、どのサブシステムが要求に責任があるかを知っています。
ファサードパターンの設計方法
ファサードパターンの設計方法を見てみましょう。
出力
上記のプログラムは、次の出力を生成します-
説明
このプログラムはシナリオを使用して設計されています。 それは、車または任意の走行車両のエンジンを始動することです。 コードを観察すると、運転、駐車、燃料消費のための関連機能も含まれています。
Pythonデザインパターン-コマンド
コマンドパターンは、アクション間に抽象化のレベルを追加し、これらのアクションを呼び出すオブジェクトを含みます。
この設計パターンでは、クライアントは実行するコマンドのリストを含むコマンドオブジェクトを作成します。 作成されたコマンドオブジェクトは、特定のインターフェイスを実装します。
以下は、コマンドパターンの基本的なアーキテクチャです-
コマンドパターンの実装方法
次に、設計パターンを実装する方法を見ていきます。
出力
上記のプログラムは、次の出力を生成します-
説明
出力には、Python言語でリストされているすべてのコマンドとキーワードが実装されます。 変数の必要な値を出力します。
Pythonデザインパターン-アダプター
アダプタパターンは、2つの互換性のないインターフェイス間のブリッジとして機能します。 このタイプの設計パターンは、2つの独立したインターフェースの機能を組み合わせた構造パターンの下にあります。
このパターンには、独立または互換性のないインターフェイスの機能を結合する単一のクラスが含まれます。 実際の例としては、メモリカードとラップトップ間のアダプタとして機能するカードリーダーの場合があります。 メモリカードをカードリーダーに差し込み、カードリーダーをラップトップに差し込み、ラップトップ経由でメモリカードを読み取れるようにします。
アダプタ設計パターンは、クラスを一緒に機能させるのに役立ちます。 要件に基づいて、クラスのインターフェイスを別のインターフェイスに変換します。 パターンには、1つの名前と複数のフォームに名前を付けるポリモーフィズムのスペシエーションが含まれます。 収集された要件に従って使用できる形状クラスについて説明します。
アダプタパターンには2つのタイプがあります-
オブジェクトアダプタパターン
この設計パターンは、オブジェクトの実装に依存しています。 したがって、これはオブジェクトアダプタパターンと呼ばれます。
クラスアダプターパターン
これは、アダプター設計パターンを実装する代替方法です。 パターンは、複数の継承を使用して実装できます。
アダプターパターンの実装方法
ここで、アダプターパターンの実装方法を見てみましょう。
出力
上記のプログラムは、次の出力を生成します-
説明
コードには、さまざまなパラメーターと属性を持つアダプターインターフェイスが含まれています。 Adapteeに加えて、すべての属性を実装し、出力を可視として表示するTargetインターフェイスが含まれています。
Pythonデザインパターン-デコレータ
デコレータパターンを使用すると、ユーザーは既存のオブジェクトの構造を変更せずに、新しい機能を追加できます。 このタイプのデザインパターンは、既存のクラスのラッパーとして機能するため、構造パターンの下にあります。
このパターンはデコレータークラスを作成します。デコレータークラスは元のクラスをラップし、クラスメソッドシグネチャをそのまま保持する追加機能を提供します。
デコレータパターンの動機は、オブジェクトの追加の責任を動的に付加することです。
デコレータのデザインパターンを実装する方法
下記のコードは、Pythonでデコレータデザインパターンを実装する方法の簡単なデモです。 この図には、クラス形式のコーヒーショップのデモンストレーションが含まれています。 作成されたコーヒークラスは抽象であるため、インスタンス化できません。
コーヒーショップの抽象クラスの実装は、下記のように別のファイルで行われます-
出力
上記のプログラムは、次の出力を生成します-
Pythonデザインパターン-プロキシ
プロキシ設計パターンには、「Real Subject」と呼ばれる既存のオブジェクトの代わりに「Proxy」と呼ばれる新しいオブジェクトが含まれます。 実際のサブジェクトで作成されたプロキシオブジェクトは、クライアントが実際のオブジェクトの代わりにプロキシが使用されていることを認識しないように、同じインターフェイス上になければなりません。 クライアントがプロキシに生成したリクエストは、実際のサブジェクトを通過します。
プロキシパターンのUML表現は次のとおりです-
プロキシパターンを実装する方法
プロキシパターンを実装する方法を見てみましょう。
出力
上記のプログラムは、次の出力を生成します-
プロキシパターン設計は、作成したイメージの複製に役立ちます。 display_image()関数は、値がコマンドプロンプトに出力されているかどうかを確認するのに役立ちます。
責任の連鎖
責任の連鎖パターンは、クライアントからの指定された要求がそれに含まれるオブジェクトのチェーンを通過するソフトウェアで疎結合を実現するために使用されます。 オブジェクトのチェーンを構築するのに役立ちます。 要求は一方の端から入り、あるオブジェクトから別のオブジェクトに移動します。
このパターンにより、オブジェクトはどのオブジェクトがリクエストを処理するかを知らなくてもコマンドを送信できます。
責任の連鎖パターンを実装する方法は?
次に、責任の連鎖パターンを実装する方法を見ていきます。
出力
上記のプログラムは、次の出力を生成します-
説明
上記のコードは、各機能を介してコマンドを送信する月次タスクのレポートを作成します。 PDF用とテキスト用の2つのハンドラーが必要です。 必要なオブジェクトが各機能を実行すると、出力を印刷します。
Pythonデザインパターン-オブザーバー
このパターンでは、オブジェクトは、イベントのトリガーを待機するオブザーバーとして表されます。 指定されたイベントが発生すると、オブザーバーはサブジェクトにアタッチします。 イベントが発生すると、サブジェクトはオブザーバーにイベントが発生したことを伝えます。
次のUML図はオブザーバーパターンを表します-
オブザーバーパターンの実装方法
オブザーバーパターンの実装方法を見てみましょう。
出力
上記のプログラムは、次の出力を生成します-
説明
上記のコードは、特定の結果をダウンロードする手順を説明しています。 オブザーバーパターンロジックに従って、すべてのオブジェクトはオブザーバーとして扱われます。 イベントがトリガーされると出力を印刷します。
Pythonデザインパターン-状態
これは、指定されたステートマシンクラスから派生したサブクラスを使用して実装されるステートマシン用のモジュールを提供します。 メソッドは状態に依存せず、デコレータを使用して宣言された遷移を引き起こします。
状態パターンを実装する方法は?
状態パターンの基本的な実装を以下に示します-
出力
上記のプログラムは、次の出力を生成します-
Pythonデザインパターン-戦略
戦略パターンは、行動パターンの一種です。 戦略パターンの主な目標は、指定されたタスクを完了するために、クライアントがさまざまなアルゴリズムまたは手順から選択できるようにすることです。 言及されたタスクを複雑にすることなく、さまざまなアルゴリズムを交換できます。
このパターンを使用して、外部リソースにアクセスするときの柔軟性を向上させることができます。
戦略パターンの実装方法
以下に示すプログラムは、戦略パターンの実装に役立ちます。
出力
上記のプログラムは、次の出力を生成します-
説明
出力を実行する関数からの戦略のリストを提供します。 この行動パターンの主な焦点は行動です。
Pythonデザインパターン-テンプレート
テンプレートパターンは、サブクラスが具体的な動作をオーバーライドする抽象操作を使用して、基本クラスの基本アルゴリズムを定義します。 テンプレートパターンは、アルゴリズムの概要を別の方法で保持します。 このメソッドは、テンプレートメソッドと呼ばれます。
以下は、テンプレートパターンのさまざまな機能です-
- 操作のアルゴリズムのスケルトンを定義します
- アルゴリズムの特定のステップを再定義するサブクラスが含まれます。
出力
上記のプログラムは、次の出力を生成します-
説明
このコードは、食事を準備するためのテンプレートを作成します。 ここで、各パラメーターは、お茶、ピザなどの食事の一部を作成するための属性を表します。
出力は、属性の視覚化を表します。
Pythonデザインパターン-フライウェイト
フライウェイトパターンは、構造設計パターンのカテゴリに分類されます。 オブジェクト数を減らす方法を提供します。 アプリケーション構造の改善に役立つさまざまな機能が含まれています。 フライウェイトオブジェクトの最も重要な機能は不変です。 これは、一度構築すると変更できないことを意味します。 このパターンは、HashMapを使用して参照オブジェクトを保存します。
フライウェイトパターンの実装方法
次のプログラムは、フライウェイトパターンの実装に役立ちます-
出力
上記のプログラムは、次の出力を生成します-
Pythonデザインパターン-抽象ファクトリー
抽象ファクトリパターンは、ファクトリファクトリとも呼ばれます。 このデザインパターンは、創造的なデザインパターンのカテゴリに分類されます。 オブジェクトを作成する最良の方法の1つを提供します。
Factoryに関連するオブジェクトの作成を担当するインターフェイスが含まれています。
抽象ファクトリパターンを実装する方法は?
次のプログラムは、抽象ファクトリパターンの実装に役立ちます。
出力
上記のプログラムは、次の出力を生成します-
説明
上記のプログラムでは、抽象ファクトリーは各ウィンドウのオブジェクトを作成します。 各メソッドを呼び出し、期待どおりに出力を実行します。
Pythonデザインパターン-オブジェクト指向
オブジェクト指向パターンは、最も一般的に使用されるパターンです。 このパターンは、ほぼすべてのプログラミング言語で見られます。
オブジェクト指向パターンを実装する方法は?
オブジェクト指向パターンの実装方法を見てみましょう。
出力
上記のプログラムは次の出力を生成します
説明
コードには、出力の要件に従って出力されるクラス属性とインスタンス属性が含まれます。 オブジェクト指向パターンの一部を形成するさまざまな機能があります。 機能については、次の章で説明します。
オブジェクト指向の概念の実装
この章では、オブジェクト指向の概念を使用したパターンとPythonでの実装に焦点を当てます。 関数の周りのデータを操作するステートメントのブロックの周りにプログラムを設計するとき、それは手続き指向プログラミングと呼ばれます。 オブジェクト指向プログラミングでは、クラスとオブジェクトと呼ばれる2つの主なインスタンスがあります。
クラスとオブジェクト変数を実装する方法は?
クラスとオブジェクト変数の実装は次のとおりです-
出力
上記のプログラムは、次の出力を生成します-
説明
この図は、クラス変数とオブジェクト変数の性質を示すのに役立ちます。
- 「人口」は「ロボット」クラスに属します。 したがって、クラス変数またはオブジェクトと呼ばれます。
- ここでは、母集団変数をself.populationではなくRobot.populationと呼びます。
Pythonデザインパターン-イテレーター
イテレーターの設計パターンは、動作設計パターンのカテゴリーに分類されます。 開発者は、ほぼすべてのプログラミング言語でイテレーターパターンに出会います。 このパターンは、基になるレイヤー設計を理解せずに、コレクション(クラス)の要素に順次アクセスするのに役立つように使用されます。
イテレータパターンの実装方法
イテレータパターンを実装する方法について説明します。
出力
上記のプログラムは、次の出力を生成します-
パターンに焦点を合わせると、フィボナッチ数列は反復子パターンとともに印刷されます。 ユーザーの強制終了時に、次の出力が出力されます-
説明
このpythonコードは、反復子パターンに従います。 ここでは、カウントを開始するためにインクリメント演算子が使用されます。 カウントは、ユーザーによる強制終了で終了します。
Pythonデザインパターン-辞書
辞書は、キーと値の組み合わせを含むデータ構造です。 これらはJSON – JavaScript Object Notationの代わりに広く使用されています。 辞書はAPI(Application Programming Interface)プログラミングに使用されます。 辞書は、オブジェクトのセットを別のオブジェクトのセットにマップします。 辞書は変更可能です。これは、要件に基づいて必要に応じて変更できることを意味します。
Pythonで辞書を実装する方法は?
次のプログラムは、Pythonの作成から実装までの辞書の基本的な実装を示しています。
出力
上記のプログラムは、次の出力を生成します-
注- Pythonでの辞書の実装に関連する欠点があります。
欠点
辞書は、文字列、タプル、リストなどのシーケンスデータ型のシーケンス操作をサポートしていません。 これらは組み込みマッピングタイプに属します。
リストのデータ構造
Listsデータ構造は、Pythonの汎用データ型であり、角括弧で囲まれたコンマ区切り値のリストとして記述できます。
構文
ここに構造の基本的な構文があります-
観察すると、構文は配列のように宣言されますが、リストには異なるデータ型の要素を含めることができるという唯一の違いがあります。 配列には、同じデータ型の要素が含まれます。 リストには、文字列、整数、オブジェクトの組み合わせを含めることができます。 リストは、スタックとキューの実装に使用できます。
リストは変更可能です。 これらは必要に応じて変更できます。
リストを実装する方法は?
次のプログラムは、リストの実装を示しています-
出力
上記のプログラムは、次の出力を生成します-
Pythonリストの組み込み関数は次のとおりです-
- Append()-リストの最後に要素を追加します。
- Extend()-リストの要素を別のリストに追加します。
- Insert()-定義されたインデックスにアイテムを挿入します。
- Remove()-指定されたリストから要素を削除します。
- Reverse()-リスト内の要素を反転します。
- * sort()*-時系列順に要素をソートするのに役立ちます。
Pythonデザインパターン-セット
セットは、反復可能で、変更可能で、重複する要素が含まれていない、順序付けられていないコレクションとして定義できます。 Pythonでは、セットクラスは数学的なセットの表記法です。 セットを使用する主な利点は、特定の要素をチェックするための高度に最適化された方法が含まれていることです。
Pythonには、凍結セットと呼ばれる別のカテゴリが含まれています。 これらのセットは、必要な結果を生成するメソッドと演算子のみをサポートする不変オブジェクトです。
セットを実装する方法は?
次のプログラムは、セットの実装に役立ちます-
出力
上記のプログラムは、次の出力を生成します-
凍結セットは、次のプログラムを使用して実証することができます-
出力
上記のプログラムは、次の出力を生成します-
Pythonデザインパターン-キュー
キューはオブジェクトのコレクションであり、FIFO(ファーストインファーストアウト)およびLIFO(ラストインファーストアウト)の手順に従って単純なデータ構造を定義します。 挿入および削除操作は、 enqueue および dequeue 操作と呼ばれます。
キューは、含まれるオブジェクトへのランダムアクセスを許可しません。
FIFO手順の実装方法
次のプログラムは、FIFOの実装に役立ちます-
出力
上記のプログラムは、次の出力を生成します-
LIFO手順の実装方法は?
次のプログラムは、LIFO手順の実装に役立ちます-
出力
上記のプログラムは、次の出力を生成します-
優先度キューとは何ですか?
優先度キューは、指定されたデータ構造内の最小または最大のキーを持つレコードへの迅速なアクセスを提供するために、順序付けられたキーを持つレコードのセットを管理するコンテナデータ構造です。
優先度キューを実装する方法は?
優先度キューの実装は次のとおりです-
出力
上記のプログラムは、次の出力を生成します-
文字列とシリアル化
文字列のシリアル化は、オブジェクトの状態をバイトストリームに書き込むプロセスです。 Pythonでは、シリアル化を有効にするために「pickle」ライブラリが使用されます。 このモジュールには、Pythonオブジェクト構造をシリアライズおよびデシリアライズするための強力なアルゴリズムが含まれています。 「Pickling」はPythonオブジェクト階層をバイトストリームに変換するプロセスで、「Pickling」は逆の手順です。
pickleモジュールのデモは次のとおりです-
出力
上記のプログラムは、次の出力を生成します-
Pythonの同時実行性
並行性は、しばしば並列性と誤解されます。 並行性とは、独立したコードが体系的に実行されるようにスケジューリングすることを意味します。 この章では、Pythonを使用したオペレーティングシステムの同時実行に焦点を当てます。
次のプログラムは、オペレーティングシステムの同時実行の実行に役立ちます-
出力
上記のプログラムは、次の出力を生成します-
説明
「マルチプロセッシング」は、スレッド化モジュールに似たパッケージです。 このパッケージは、ローカルおよびリモートの同時実行性をサポートしています。 このモジュールにより、プログラマーは特定のシステムで複数のプロセスを使用できるという利点が得られます。
Pythonデザインパターン-アンチ
アンチパターンは、事前に定義されたデザインパターンとは反対の戦略に従います。 この戦略には、一般的な問題に対する一般的なアプローチが含まれています。これは形式化でき、一般に優れた開発プラクティスと見なすことができます。 通常、アンチパターンは反対であり、望ましくありません。 アンチパターンは、ソフトウェア開発で使用される特定のパターンであり、不適切なプログラミング手法と見なされます。
アンチパターンの重要な機能
ここで、アンチパターンのいくつかの重要な機能を見てみましょう。
正しさ
これらのパターンは文字通りあなたのコードを壊し、間違った行動をさせます。 以下はこの簡単な説明です-
保守性
プログラムは、要件に従って理解および変更が容易な場合、保守可能であると言われます。 モジュールのインポートは、保守性の例と考えることができます。
アンチパターンの例
次の例は、アンチパターンのデモンストレーションに役立ちます-
説明
この例には、Pythonで関数を作成するための良い標準と悪い標準のデモが含まれています。
Pythonデザインパターン-例外処理
例外の処理も、設計パターンの主要な基準です。 例外は、プログラムの実行中に発生するエラーです。 特定のエラーが発生した場合、例外を生成することが重要です。 これは、プログラムのクラッシュを抑制するのに役立ちます。
なぜ例外を使用するのですか?
例外は、プログラムのエラーや特別な条件を処理する便利な方法です。 指定したコードでエラーが発生する可能性があるとユーザーが考える場合、例外処理を使用することが重要です。
例–ゼロによる除算
出力
上記のプログラムは、次の出力を生成します-
例外を発生させる
特にPythonプログラミングでは、実行時に対応するコードエラーが発生すると例外が発生します。 これは、*“ raise” *キーワードを使用して強制的に上げることができます。