Pythonにはモジュールという考え方があります。
モジュールとは端的に言ってしまえば、Pythonプログラムの事です。
だから abc.py も xyz.py も全てモジュールという事になります。
モジュールとは?
Pythonでは、あるモジュールから別のモジュールを呼び出すことができます。abc.pyというPythonプログラムでxyz.pyを呼び出すことが出来るという事です。
モジュールの呼び出しには import を使います。例として abc.py を呼び出すにはこうします。
import abc
importを使うとき、拡張子の py は省きます。
ただしモジュールを呼び出したからといって何も起きません。モジュールを利用するには通常、モジュール内に関数やクラスの記述をしておきます。
モジュールを使ってみる
簡単なモジュールの利用例を示します。
まずは他のプログラムから利用できるように関数のみを定義したPythonスクリプトファイルを作成しておきます。
mylib.py
# -*- charset: utf-8 -*-
import random
"""
サイコロの1~6を返す関数
"""
def saikoro():
return random.randint(1, 6)
"""
名言を表示する関数
"""
def meigen():
meigen_list = ["心配は怠け者の暇つぶし", "手に入りにくいものは欲しくなる", "地図は現地ではない", "義を見てせざるは、勇なきなり", "終わりが近づけば、何が大切か分かる"]
print(meigen_list[random.randrange(len(meigen_list))])
ファイル mylib.py には2つの関数が定義されています。
関数名 | 機能 | 使い方 |
---|---|---|
saikoro | サイコロの目(1~6)をランダムで返す | a = saikoro() |
meigen | 名言をランダムで表示する | meigen() |
これを別のPythonファイルから呼び出してみます。
mylib.py を呼び出すために新たに test_mylib1.py というファイルを作成します。
test_mylib1.py
# モジュールを使ってみる1
import mylib
n = mylib.saikoro()
print("{}が出ました!".format(n))
mylib.meigen()
実行イメージ ※注 実行するたびに表示は変わります
1が出ました!
心配は怠け者の暇つぶし
解説
import mylib
とすることで mylib.py に定義した関数やクラス(今回は関数のみ定義)にアクセスできます。
ただし、importで指定したモジュール内の関数やクラスの呼び出しは注意が必要です。関数やクラスの先頭にモジュール名をつけて.(ピリオド)でつなげて呼び出す必要があるからです。
importで指定したモジュール内の関数やクラスの呼び出し方
《モジュール名》.《関数 or クラス名》
例として、mylib.py に定義した関数meigenを別ファイルから呼び出す場合はこうします。
import mylib mylib.meigen() # mylibモジュールのmeigenを呼び出し
もし頻繁に使いたいのであれば、毎回頭にモジュール名をつけるのは面倒です。
先頭に記述するモジュール名を省く方法を次に示します。
fromを使ってimport文を制御する
モジュール内の特定の関数やクラスのみ直接参照したい場合
例えば mylibモジュール内の saikoro関数のみ直接呼び出したい場合はこうなります。
test_mylib2.py
# モジュールを使ってみる2: モジュール内の特定の要素を指定する
from mylib import saikoro
n = saikoro()
print("{}が出ました!".format(n))
実行イメージ
6が出ました!
解説
直接呼び出したい場合は、from句を使います。
from 《モジュール名》 import 《直接呼び出したい関数 or クラス名》
今回は、mylibモジュール内のsaikoro関数を直接呼出したいので、こうしています。
from mylib import saikoro
importには、複数の要素を指定することも可能です。その際は、 , (カンマ)で区切ります。
from mylib import saikoro, meigen
importに指定したい要素が多い場合は、* を使って全ての関数やクラスを直接参照することも出来ます。
次の例を見て下さい。
モジュール内の全ての関数やクラスを直接参照したい場合
「全て」を意味する *(アスタリスク)をimport文に指定することで、モジュール内の全ての関数やクラスを直接参照できます。
test_mylib3.py
# モジュールを使ってみる3: モジュール内の全ての要素を指定する
from mylib import *
n = saikoro()
print("{}が出ました!".format(n))
meigen()
実行イメージ
2が出ました!
心配は怠け者の暇つぶし
モジュールのメリット
モジュールについてまとめるならこうなるでしょう。
以上、Pythonモジュールについてでした。
コメント