-
概要概要
PythonモジュールとPythonパッケージは、モジュラープログラミングを容易にする2つのメカニズムです。
スクリプトが直接実行されることを意図していますPythonのファイルです。
モジュールは、スクリプトや他のモジュールにインポートされることを意図していますPythonのファイルです。
パッケージには、仕事一緒に、特定の機能を提供することに関連するモジュールの集合体です。
ライブラリが緩く、「コードの束」を意味する包括的な用語です。これらは、幅広い機能を提供できる数十から数百の個別のモジュールを持つことができます。
- Matplotlibはプロットライブラリです。
- Python標準ライブラリには、一般的なタスクを実行するための何百ものモジュールが含まれています
パッケージとモジュールだけが、Pythonに固有の明確な意味を持っています。
-
モジュール
Pythonでモジュールを定義するには、実際には3つの異なる方法があります。
- モジュールはで書くことができます
Python itself
- モジュールは
C
、re(正規表現)モジュールのように、実行時に動的に書き込みおよびロードできます。 built-in
モジュールは、本質的に同様に、インタプリタに含まれるitertoolsモジュール。
モジュールの内容は、3つのケースすべてで同じ方法でアクセスされます:
import
ステートメントを使用します。インタプリタは
import
ステートメントを実行するfile.py
と、次のソースからアセンブルされたPython変数でアクセスできる検索パスと呼ばれるディレクトリのリストを検索しsys.path
ます。- 入力スクリプトが実行されたディレクトリ、またはインタプリタがインタラクティブに実行されている場合は現在のディレクトリ
- PYTHONPATH環境変数に含まれるリストディレクトリ
- Pythonのインストール時に構成されたディレクトリのインストール依存リスト
import re re.__file__ # 查看module位置
import module_name
モジュールの内容に呼び出し元が直接アクセスできるようにすることはありません。各モジュールには、モジュールで定義されたすべてのオブジェクトのグローバルシンボルテーブルとして機能する独自のプライベートシンボルテーブルがあります。したがって、モジュールは個別の名前空間を作成します。組み込み関数
dir()
は、名前空間で定義された名前のリストを返します。 - モジュールはで書くことができます
-
脚本
任意の
.py
モジュールが含まれているファイルは、基本的にも、Pythonスクリプトであり、それは1のように実行することができない理由はありません。$ python file.py
最初にモジュールを実行します
file.py
場合は
.py
、ファイルがモジュールとしてインポートされ、Pythonは特別な設定dunderの変数を__name__
モジュールの名前に。ただし、ファイルがスタンドアロンスクリプトとして実行される場合は__name__
、文字列に設定されます"__main__"
。モジュールは、モジュール内に含まれる機能をテストする目的で、スタンドアロンスクリプトとして実行する機能を備えて設計されていることがよくあります。これはユニットテストと呼ばれます。
-
パッケージ
パッケージには、ディレクトリ内のモジュールの集まりです。
パッケージは、ドット表記を使用してモジュール名前空間の階層構造を可能にします。
モジュールがグローバル変数名間の衝突を回避するのに役立つのと同じように、パッケージはモジュール名間の衝突を回避するのに役立ちます。
パッケージは、OS固有の階層ファイル構造を使用します。
名前の付いたファイル
__init__.py
がパッケージディレクトリに存在する場合、パッケージまたはパッケージ内のモジュールがインポートされたときに呼び出されます。これは、パッケージレベルのデータの初期化など、パッケージ初期化コードの実行に使用できます。Pythonはこの規則に従い
__init__.py
ます。パッケージディレクトリ内のファイルに、という名前のリストが含ま__all__
れている場合、ステートメントfrom packageName import *
が検出されたときにインポートする必要があるモジュールのリストと見なされます。 -
参考文献
- 本物のPython:Pythonモジュールとパッケージ–はじめに
- 実際のPython:スクリプト、モジュール、パッケージ、ライブラリ
- StackOverflow:Pythonのモジュールとライブラリの違いは何ですか?
- Pythonドキュメント:モジュール