この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。
前回は、モジュールにいて学びました。Pythonはプログラムでよく使うコードを部品にできます。
今回もモジュールです。便利な読み込み方を学びます。
モジュール名を変える
モジュールを呼び出す際に、名前を変えてインポートする方法があります。モジュール名が長かった場合など、省略した名前に変えることでコードが読みやすくなる場合があります。
import モジュール名 as 別名
以下は、モジュールを別名で呼び出した例です。フォルダーの中に、ファイル「mod_1.py」を作成します。内容は以下の通りです。
#mod_1.py def calc_area(x, y): return x * y
このモジュールは以下のように呼び出せます。
#m_test01.py import mod_1 as m height, width = 3, 5 print(m.calc_area(height, width)) # 15が返ってくる
「mod_1」の記述を「m」に短縮して呼び出すことができました。
モジュールから直接読み込む
モジュールを呼び出す際に、モジュール名を省略して呼び出せる方法があります。
from モジュール名 import 識別子
識別子には関数名、変数名、クラス名などが入ります。この様に記述すると、識別子で指定した名前のみで呼び出すことができます。
上記ファイル「mod_1.py」を以下のように呼び出すことができます。ファイル「m_test02.py」を以下の内容でm_test01.pyと同じ場所においてください。
#m_test02.py from mod_1 import calc_area height, width = 3, 5 print(calc_area(height, width)) # 15が返ってくる
「mod_1.」の記述を省略して呼び出すことができました。
パッケージを作る
パッケージとは、複数のPythonファイルをまとめたフォルダーです。パッケージをインポートすることで、パッケージ直下の複数のPythonファイルをモジュールとして使用できます。パッケージの作成手順は以下の通りです。
- フォルダーを作成する
- フォルダーに「init.py」というファイルを置く
- フォルダーにモジュールファイルを作成して置く
init.pyにはモジュールの初期化・実行のコードを書けますが、現段階では空のままで良いです。
パッケージの作成例を見てみましょう。まず上記と同じ場所にpackageというフォルダーを作成して、中に空のファイル「init.py」と、「mod_2.py」、「mod_3.py」を配置します。内容は以下の通りです。
#mod_2.py def calc_trangle(x, y): return x * y / 2
#mod_3.py def calc_circle(x): return x * x * 3.14
次にm_test01.pyと同じ場所に、ファイル「m_test03.py」を配置します。ここまでのファイル配置は以下のようになります。
Folder │ m_test01.py │ m_test02.py │ m_test03.py │ mod_1.py │ └─package __init__.py mod_2.py mod_3.py
m_test03.pyの内容を以下のようにして、実行してみましょう。
#m_test03.py import package.mod_2 height, width = 3, 5 print(package.mod_2.calc_trangle(height, width)) # 7.5が返ってくる import package.mod_3 radius = 3 print(package.mod_3.calc_circle(radius)) # 28.26が返ってくる
三角形と円の面積計算ができました。
モジュール、パッケージの配置場所
モジュールが増えてくると、モジュールがどこから呼び出されているかを確認したいことがあります。 m_test01.pyと同じ場所に、以下の内容でファイル「m_test04.py」を配置して実行してみましょう。
#m_test04.py import mod_1 import package.mod_2 print(mod_1.__file__) # Folder\Python_Work\mod_1.py を返す print(package.__file__) # Folder\Python_Work\package\__init__.py を返す print(package.mod_2.__file__) # Folder\Python_Work\package\mod_2.py を返す
各モジュールの配置場所が明確になりました。 「file」は、「name」とおなじ、特殊属性を表す変数です。指定したモジュールのフルパスファイル名(パッケージの場合は、直下の「init.py」のフルパスファイル名)を表します。
次回はOS機能の使用
いかがでしょうか。プログラミングでよく使うコードは、モジュール化しておくと便利ですね。ところでPythonには、今回作成して自作モジュールとは別に標準ライブラリというものがあります。次回はその中からファイルやディレクトリの操作ができるモジュールをご紹介します。お楽しみに!!