ホームページ > バックエンド開発 > Python チュートリアル > Python モジュールとパッケージの主な違いは何ですか?

Python モジュールとパッケージの主な違いは何ですか?

Susan Sarandon
リリース: 2024-12-08 07:53:10
オリジナル
590 人が閲覧しました

What's the Key Difference Between Python Modules and Packages?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート