Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
今回はPythonプログラムづくりがもっと便利に、もっと楽しくなる自作モジュールまたは自作パッケージの基本的な作り方と基本的な使い方の解説です。
Contents
モジュールとは、Pythonのファイル(ソースコード?拡張子がpy)です。複数のモジュールをまとめたものがパッケージです。そして、そうしたパッケージを含む関連ファイルをまとめたものがライブラリです。
たとえば、足し算をするためのPythonファイル「addition.py」を作ったとします。それがモジュールです。仮にそのaddition.pyの中身は次のものだとします。
def fnc_add (left_arg, right_arg):
result = left_arg + right_arg
return result
単純に足し算するだけの機能です。
この足し算だけでは不便なので引き算、掛け算、割り算のためのプログラムもそれぞれ、
と作ります。
additcition.pyとこれら3つで四則演算ができるようになりました。多少乱暴にいうと、これらのモジュールをすべてまとめて1つのフォルダに放り込むと、そのフォルダがパッケージとなります。
仮にそのフォルダ名をarithmetic operationsという名前にしましょう。詳しい設定は省きますが、そのようにするとそれでパッケージ「arithmetic operations」が完成です。
しかし、普通の四則演算以外にも、ベクトルの計算、行列の計算、微分や積分、さらにはグラフを書いたりといったこともできるプログラムが欲しいですね。そこで、
などをどんどん作っていきます。すると数学に関するパッケージがいろいろできます。そこでこれら数学に関連するモジュールやパッケージを1つにまとめたくなります。そこで登場するのがライブラリという概念です。
たとえば上の例だと、「math_libraries」みたいな名前のフォルダに数学関連のモジュールやパッケージをまとめれば、乱暴にいうとそのフォルダがmath_librariesという名前のライブラリとなります。
このあたりの用語は使い方は場合によって少し違っていたりするかもしれませんが、実際上はそんなに混乱することはないと思います。
さてこれから作るモジュールを入れるフォルダを作りましょう。そのフォルダが上述の説明のようにパッケージとなります。
まずどこに作るべきかですが、基本的にはPythonファイルを動かすカレントワーキングディレクトリの中に置くこととなります。
カレントワーキングディレクトリを確認するためにPythonの次のコードを実行してください。
import os
os.getcwd()
ここで、例えば
'/Users/hogehoge/bin'
と表示された場合は、このbinフォルダの中にパッケージとなるフォルダを入れます。というわけで、とりあえずそのカレントワーキングディレクトリの中にパッケージとなるフォルダを新規作成しておいてください。
次にそのフォルダの名前を変えましょう。
パッケージの名前については、Python推奨の名前の付け方(命名規則)というものがありまして、それによるとパッケージの名称はすべて小文字で、しかもアンダースコア「_」は使うべきでないとされています。
今回はそれに従って次のようにしました。
mypackages
では続いてこのmypackagesフォルダ(つまりmypackagesというパッケージそのもの)に入れるモジュールであるPythonファイルを次に作ってみましょう。
エディタ上(私はVisual Studio Codeです)で、Pythonの新規ファイルとして「addition.py」という名前のファイルを作ってその中身として、
def fnc_addition (left_arg, right_arg):
result = left_arg + right_arg
return result
ただこれだけを書きます。fnc_additionという関数が定義されているだけのもので、処理の中身はただ足し算するだけです。
そしてこのPythonファイルを上で作成したmypackagesフォルダに保存します。
この時点で、
という3つのものができあがりました。では実際にこれらを使ってみましょう。
これで準備が整いました。あとはPythonファイルをもう1つ新規作成しましょう。自作モジュールや自作パッケージを実際に利用するコードを書くためです。それを仮に「use_mylibs.py」としましょう。
このときの自作モジュールまたは自作パッケージの基本的な使い方として次の2つ種類を紹介しておきます。他にもいくつか書き方・使い方のバリエーションがあります。
そのuse_mylibs.pyの中身として次のコードを書きます。
from mypackages.addition import fnc_addition
fnc_addition(2,3)
見てわかると思うのですが、
from パッケージ名.モジュール名 import そのモジュールの中の関数名
という書き方になっています。これが最も基本的な(?)使い方だと思います。続いて、別の使い方も見ていきます。
次にパッケージ内(今回はmypackagesフォルダ内)に、次のような名前のPythonファイルを作成しましょう。
__init__.py
これはこのとおりの名前にしてください。これが作ったパッケージについて初期設定を上手くしてくれるファイルとなります。
続いてその__init__.pyの中身として次のコードを書いてください
from mypackages.addition import fnc_addition as add
これは、
from パッケージ名.モジュール名 import そのモジュールの中の関数名 as その関数のニックネーム(略称)
という書き方になっています。
そして上で作ったuse_mylibs.pyの中身として、今度は、
import mypackages
mypackages.add(2,3)
とだけ書いて実行してみてください。結果は、使い方その1と同じになるはずです。
この使い方のほうが見た目がシンプルですが、逆にいえば関数の名前などの情報量が少なくなるので、関数の名前の付け方などにもよりますが、どのモジュールのどの関数なのかがパッと見ただけはわかりにくくなる場合もあり、長いコードを書くときには注意が必要となることもあるでしょう。