本稿ではモジュールの作成、インポート、グローバル変数__name__、コマンドラインからのモジュールの実行など、Pythonのモジュールの基礎を取り上げる。
前回はPythonのクラスについて解説した。例外処理など、まだ説明していない要素も多いが、基本的な構文要素や関数、クラスなどについては前回までにおおよその紹介が終わったので、今回はこれらをコードの再利用を促すためのキーパーツである「モジュール」について見ていこう。
Pythonにおける「モジュール」とは「独立したファイルに収められたPythonスクリプト」のことだ。そういうわけで、前回まではPython Tools for Visual Studio(以下、PTVS)が提供する[Interactive]ウィンドウでの対話的なコードの入力/実行を前提として解説をしてきたが、今回はVSでPythonプロジェクトを作成してみよう。
なお、今回もPTVSがインストール済みのVisual Studio(以下、VS)を実行環境としている(実際に使用しているPythonのバージョンは64bit版のPython 3.5.2)。
PTVSをインストールした状態で、VSの[新しいプロジェクト]ダイアログを開いて、開発言語としてPythonを選択すると次のような画面になる。
Python用のプロジェクトテンプレートには、既存のPythonコードからVS用のプロジェクトを作成するもの、Pythonのコンソールアプリ用のテンプレート、AzureやWebアプリ用のもの、(最近になって活動が活発化している)IronPython用のテンプレートがある。ここでは、モジュールの話をしたいだけなので、シンプルに上から2番目にある[Python Application]テンプレートを利用してプロジェクトを作成しよう。プロジェクト名はデフォルトのままとした(ここでは「PythonApplication1」)。
これにより、VS用のPythonプロジェクトが作成される。実際に作成されるのは、PythonApplication1.pyファイルとPythonApplication1.pyprojファイルの2つだけだ。前者にはPythonコードを記述していく。後者にはVSでPythonプロジェクトを管理するために必要な情報が記述される(実際には、コマンドプロンプトを開いて「python PythonApplication1.py」コマンドを実行するだけで、スクリプトをコマンドラインから実行できる。もちろん、Pythonのインストール/パス設定などは必要だ)。
PTVSを使えば、デバッグ実行もボタン一発で済み、作成したモジュールを[Interactive]ウィンドウで試しに使ってみるのも簡単だ。そのため、以下ではVSでの作業を念頭に話を進めるが、好きなエディタとコマンドプロンプト(Pythonの対話環境およびpythonコマンドを実行する)を使っても本稿の内容は試せるはずだ。
では、実際にPythonApplication1.pyファイルに簡単なコードを書いてみよう。
先ほども述べたように、Pythonにおけるモジュールとは独立したファイルに記述されたPythonコード群のことだ。そこで、今作成したプロジェクトに含まれるPythonApplication1.pyファイルにコードを記述すれば、Pythonモジュールが作られるということだ。ここでは以下のようなコードを記述してみる。
print("hello from Python");
def hello(name):
print("hello", name)
VSからこのモジュールを実行するには幾つかの方法がある。まず、ツールバーにある[開始]ボタンをクリックする方法だ。あるいはソリューションエクスプローラーからコマンドプロンプトを開いて、コマンドラインでpythonコマンドを利用する方法もある。また、[Interactive]ウィンドウでこのモジュールをインポートする方法もある。
最初の方法の[開始]ボタンをクリックすると以下のようにコマンドプロンプトが開く。
先頭のprint関数により画面に出力が行われている。def文による関数helloの定義ももちろん実行されている。ただ、関数定義はされているが、使用されていないだけだ。ソリューションエクスプローラーからコマンドプロンプトを開いて、そこからpythonコマンドを実行した場合も同様だ。
コマンドプロンプトを開いてpythonコマンドを実行
最後に[Interactive]ウィンドウで、今作成したモジュールをインポートしてみよう。これには以下のコードを[Interactive]ウィンドウに入力する。
import PythonApplication1
PythonApplication1.hello("world")
実行結果は次のようになる。
上に示した形式のimport文は最もシンプルなimport文の使い方だ。これによりPythonApplication1.pyファイルの内容が[Interactive]ウィンドウ上のPythonセッションにPythonApplication1モジュールとして取り込まれる(その際にはPythonのインタープリターにより組み込み関数printが実行され、次に関数を定義しているdef文も実行される)。注意点としては、この形式でモジュールをインポートした場合には、上で示したように関数helloの呼び出しでモジュール名(ファイル名から拡張子を除いたもの)が必要になる点だ(つまり、モジュールは名前空間の役割を果たす)。
次にimport文について少し詳しく説明しよう。
Copyright© Digital Advantage Corp. All Rights Reserved.