Pythonのモジュールの基本を押さえる特集:Visual Studioで始めるPythonプログラミング(1/3 ページ)

本稿ではモジュールの作成、インポート、グローバル変数__name__、コマンドラインからのモジュールの実行など、Pythonのモジュールの基礎を取り上げる。

» 2016年11月18日 05時00分 公開
[かわさきしんじInsider.NET編集部]
「特集:Visual Studioで始めるPythonプログラミング」のインデックス

連載目次

 前回はPythonのクラスについて解説した。例外処理など、まだ説明していない要素も多いが、基本的な構文要素や関数、クラスなどについては前回までにおおよその紹介が終わったので、今回はこれらをコードの再利用を促すためのキーパーツである「モジュール」について見ていこう。

モジュールとは

 Pythonにおける「モジュール」とは「独立したファイルに収められたPythonスクリプト」のことだ。そういうわけで、前回まではPython Tools for Visual Studio(以下、PTVS)が提供する[Interactive]ウィンドウでの対話的なコードの入力/実行を前提として解説をしてきたが、今回はVSでPythonプロジェクトを作成してみよう。

 なお、今回もPTVSがインストール済みのVisual Studio(以下、VS)を実行環境としている(実際に使用しているPythonのバージョンは64bit版のPython 3.5.2)。

Pythonプロジェクトの作成

 PTVSをインストールした状態で、VSの[新しいプロジェクト]ダイアログを開いて、開発言語としてPythonを選択すると次のような画面になる。

Pythonプロジェクトのテンプレート 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]ウィンドウでこのモジュールをインポートする方法もある。

 最初の方法の[開始]ボタンをクリックすると以下のようにコマンドプロンプトが開く。

Pythonスクリプト(モジュール)の実行 Pythonスクリプト(モジュール)の実行

 先頭のprint関数により画面に出力が行われている。def文による関数helloの定義ももちろん実行されている。ただ、関数定義はされているが、使用されていないだけだ。ソリューションエクスプローラーからコマンドプロンプトを開いて、そこからpythonコマンドを実行した場合も同様だ。

プロジェクトを右クリックしてコンテキストメニューから[Open Command Prompt Here]を選択
プロジェクトを右クリックしてコンテキストメニューから[Open Command Prompt Here]を選択
コマンドプロンプトからpythonコマンドを実行
コマンドプロンプトからpythonコマンドを実行

コマンドプロンプトを開いてpythonコマンドを実行


 最後に[Interactive]ウィンドウで、今作成したモジュールをインポートしてみよう。これには以下のコードを[Interactive]ウィンドウに入力する。

import PythonApplication1
PythonApplication1.hello("world")


[Interactive]ウィンドウでの実行するPythonコード

 実行結果は次のようになる。

import文でPythonApplication1モジュールをインポートして、関数helloを呼び出す import文でPythonApplication1モジュールをインポートして、関数helloを呼び出す

 上に示した形式のimport文は最もシンプルなimport文の使い方だ。これによりPythonApplication1.pyファイルの内容が[Interactive]ウィンドウ上のPythonセッションにPythonApplication1モジュールとして取り込まれる(その際にはPythonのインタープリターにより組み込み関数printが実行され、次に関数を定義しているdef文も実行される)。注意点としては、この形式でモジュールをインポートした場合には、上で示したように関数helloの呼び出しでモジュール名(ファイル名から拡張子を除いたもの)が必要になる点だ(つまり、モジュールは名前空間の役割を果たす)。

 次にimport文について少し詳しく説明しよう。

       1|2|3 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。