モジュール_2(Python_18)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。

hirocom777.hatenadiary.org

前回は、モジュールにいて学びました。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ファイルをモジュールとして使用できます。パッケージの作成手順は以下の通りです。

  1. フォルダーを作成する
  2. フォルダーに「init.py」というファイルを置く
  3. フォルダーにモジュールファイルを作成して置く

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には、今回作成して自作モジュールとは別に標準ライブラリというものがあります。次回はその中からファイルやディレクトリの操作ができるモジュールをご紹介します。お楽しみに!!

hirocom777.hatenadiary.org

Python再学習のまとめはこちら!!