FirstStepOfPython ←戻る | 次へ→FirstStepOfPython02
モジュール
Pythonで、関数を書いたファイルは、それだけもモジュールとして使えます。つまり、前出の「First.py」をパスの通るところに置いて、「import First」とすると、それだけで、中で定義している全ての関数が、「First.〜()」と言う表記で利用出来るのです。もし、Pythonにまだ、慣れていないのであれば、最初の内は、この様なやり方で自分のライブラリを増やして行くと良いかと思います。でも、ここでの最終ゴールである。Zopeでは、この様な単純なモジュールで作成されている訳ではありません。
モジュールの種類には次のものがあり、その検索順位は次の通りです。
- パッケージ定義の「ディレクトリ(名)」
- ディレクトリで階層化をはかり、パッケージを定義出来る為、ZopeやZopeプロダクト等の大きなシステムを構築することに向いている。
- コンパイル済み(〜.soや〜.dll)の「拡張モジュール(名)」
- Pythonはインタプリタ言語の為、速度はJava並との欠点があります。それを回避する手法として、Cで書いたものをPythonから呼び出すことが出来る様になっています。例えば、kconvにはこのタイプとピュアPython版の2種類ありますが
拡張モジュールとした方が、当然高速となります。
- 〜.pyoの「〜」
- 〜.pycの「〜」
- 最初に〜.pyをPythonインタプリタが読み込んだときに自動生成される、中間コード。一般に〜.pyのタイムスタンプが、〜.pycのものより新しいと、自動的に再生成されます。
- 〜.pyの「〜」
- 上記のいずれもないときは、PythonインタプリタはこのPythonのソースコードを読み、〜.pycを作成後、実行します。
ここでは、Zopeの中で多用されているモジュールの形態「パッケージ」を簡単に解説します。
パッケージの基本構成
それでは、先ずZopeのディレクトリを眺めて試て下さい。例外もありますが、ほとんどのディレクトリに__init__.pyというファイルがあることに気付くと思います。これが、Pythonのパッケージによるモジュールの組織化の生きた手本です。
パッケージの基本用件は次の4つです。
- モジュール名をディレクトリ名とする。
- 初期化コードの「__init__.py」を入れる。初期化の必要がなければ、空ファイルでもいい。
- 必要によりパッケージの中にさらにパッケージや必要なファイル群を含むことが出来る。
- パッケージ内のモジュールの呼出しは、パッケージ名とモジュール名の間にピリオドを入れて行なう。
パッケージの呼出し方法
パッケージの基本構成は、極めて簡単ですが、重要なのは、それをどの様に呼び出し、利用するかということです。