Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでモジュール、クラス、名前空間をどのように比較しますか?


名前空間は、スコープを実装する方法です。 Pythonでは、各パッケージ、モジュール、クラス、関数、およびメソッド関数は、変数名が解決される「名前空間」を所有しています。関数、モジュール、またはパッケージが評価される(つまり、実行が開始される)と、名前空間が作成されます。それを「評価コンテキスト」と考えてください。関数などの実行が終了すると、名前空間は削除されます。変数は削除されます。さらに、名前がローカル名前空間にない場合に使用されるグローバル名前空間があります。

Pythonには、定義をファイルに入れて、スクリプトまたはインタープリターのインタラクティブインスタンスで使用する方法があります。このようなファイルはモジュールと呼ばれます。モジュールの定義は、他のモジュールまたはメインモジュールにインポートできます。したがって、Pythonモジュールは、再利用可能なコードをカプセル化するためのパッケージに他なりません。モジュールは、__init__。pyファイルが含まれるフォルダーにあります。モジュールには、関数だけでなくクラスも含めることができます。モジュールは、importキーワードを使用してインポートされます。

一方、クラスは、メインアプリケーションコードまたはアプリケーションによってインポートされたモジュール内で定義できます。クラスはオブジェクト指向プログラミングの中核であり、プロパティとメソッドを含めることができます。クラスのインスタンスを複数作成することはできますが、モジュールのインスタンスを作成することはできません。モジュールを静的クラスまたはシングルトンと比較できます。


  1. PythonとC++の名前空間をどのように比較しますか?

    PythonとC++の名前空間は実際には比較できません。たとえば、C++では- // a.h namespace ns {     struct A { .. };     struct B { .. }; } これを行うとしたら- #include "a.h" using ns::A; そのコードのポイントは、修飾されていないAを記述できることです(つまり、ns ::Aを記述しなくてもかまいません)。ここで、Pythonに相当するものを-と見なすことができます。 from a import A ただし、使用方法に関係なく、a.

  2. Pythonの名前空間とスコープ

    Pythonでは、変数、関数、ライブラリ、モジュールなどを扱います。使用する変数の名前が、別の変数の名前として、または別の関数や別のメソッドの名前としてすでに存在している可能性があります。このようなシナリオでは、これらすべての名前がPythonプログラムによってどのように管理されているかを知る必要があります。これが名前空間の概念です。 以下は名前空間の3つのカテゴリです ローカル名前空間:プログラムによって宣言された関数と変数のすべての名前は、この名前空間に保持されます。この名前空間は、プログラムが実行されている限り存在します。 グローバル名前空間:この名前空間は、Pytho