Python学習メモ:モジュール
モジュールとスクリプト
Pythonのクラスや関数の定義が書かれた.pyファイルをモジュールという。スクリプトとも呼ばれるが、両者に明確な違いはない。用途として、python3コマンドから直接実行するものをスクリプト、Pythonコード中で読み込んで利用するものをモジュールとしている。なおモジュールを利用する際はimportを用いる。詳細は6. モジュール — Python 3.8.6 ドキュメントを参照。
python3コマンドからの直接実行
python3コマンドに.pyファイルを指定すると、スクリプトとして実行できる。コマンドライン引数を受け取るときは、sysモジュールをimportすればよい。変数argvにコマンドライン引数が格納されている。
import sys def printHoge(s): print(f'{s} hoge') printHoge(sys.argv[1]) #argv[0]はスクリプト名
なおこのままだとインタラクティブモードで実行すると失敗する。これを回避するにはmain関数を用意する。
import sys def printHoge(s): print(f'{s} hoge') def main(): printHoge(sys.argv[1]) if __name__ == '__main__': main()
スクリプトとしても実行したいモジュールがあった場合、if __name__ == ‘__main__’ とすることでこれを実現できる。モジュールの名前を表す__name__変数が、python3コマンドで呼び出す際は__main__となるためである。
パッケージ
モジュールはクラスや関数などが定義されたファイルだが、プログラムの規模が拡大するにつれて数も増え、適切に管理する必要も出てくる。それらの複数のモジュールをまとめる機能をパッケージという。パッケージの実態は、モジュールやサブパッケージを集めたディレクトリである。通常はパッケージの目印として、__init__.pyを配置する。パッケージの作成手順は以下のとおり。
パッケージ内のモジュールのインポートは以下のようにする。
from {パッケージ名} import {モジュール名}
__init__.py
__init__.pyにはパッケージの初期化を行う機能もある。当該ファイルに書かれたコードは、パッケージがインポートされると一番初めに実行される。例えばここにimport文を書くことによって、パッケージの使い勝手を向上させたりすることができる。