理由はそのうち考える

まずやってみよう

Python学習メモ:モジュール

gihyo.jp

モジュールとスクリプト

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文を書くことによって、パッケージの使い勝手を向上させたりすることができる。