Python のモジュールとパッケージの違いを理解する
他の多くのプログラミング言語とは異なり、Python はモジュールとパッケージを区別します。効果的な Python コーディングには、これらの違いを明確に理解することが重要です。
モジュールの定義
Python のモジュールは、単一の Python ファイルにすぎません。これは本質的に、その特定のファイルで定義されたコードのコレクションです。たとえば、「my_module.py」という名前のファイルは、「my_module」というモジュールを定義します。モジュールは、コードを論理単位に編成するのに役立ち、他の Python スクリプトでインポートして再利用できるようにします。
パッケージの定義
一方、パッケージは、モジュールとサブパッケージのコレクション。これは、複数の Python モジュールを含むディレクトリによって表されます。さらに、Python スクリプトを格納する通常のディレクトリと区別するために、パッケージ ディレクトリ内に「__init__.py」という名前のファイルが必要です。各ディレクトリに独自の「__init__.py」ファイルが含まれている限り、パッケージはさまざまなレベルでネストできます。
モジュールとパッケージの区別
モジュールが存在する間単一の Python ファイルとして、パッケージは Python モジュールのディレクトリを構成します。ただし、この区別はファイル システム レベルでのみ適用されます。モジュールまたはパッケージのいずれかをインポートする場合、生成される Python オブジェクトのタイプは常に「モジュール」です。
注目すべき違いの 1 つは、パッケージをインポートすると、その「__init__」で定義された変数、関数、およびクラスのみが作成されることです。 py」ファイルを直接利用できます。パッケージ内のサブパッケージとモジュールは、直接インポートではアクセスできません。
例
例として、Python 標準ライブラリの xml パッケージを考えてみましょう。その xml ディレクトリには、「__init__.py」ファイルと 4 つのサブディレクトリが含まれています。これらのサブディレクトリの 1 つである etree には、さらに「__init__.py」ファイルと ElementTree.py というファイルが含まれています。
さまざまなコンポーネントをインポートすると、次のような結果になります:
import xml type(xml) # <type 'module'> xml.etree.ElementTree # AttributeError: 'module' object has no attribute 'etree' import xml.etree type(xml.etree) # <type 'module'> xml.etree.ElementTree # AttributeError: 'module' object has no attribute 'ElementTree' import xml.etree.ElementTree type(xml.etree.ElementTree) # <type 'module'> xml.etree.ElementTree.parse # <function parse at 0x00B135B0>
これらの例から、サブパッケージまたはモジュール (xml.etree.ElementTree) を明示的にインポートした後でのみアクセスできることがわかります。
注: Python は、C で実装された組み込みモジュール (sys など) も提供します。ただし、これらはご質問の範囲外となります。
以上がPython モジュールとパッケージの主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。