Python3メモ⑱(自作モジュールのインポートと if __name__ == “__main__”: )

プログラムが長くなってきますと、プログラムを複数のファイルに分け、最初に起動するファイル、読み込んで使うファイル、というように管理した方がわかり易い場合が多いです。
そこで今回はインポートについて見ていきます。
なおモジュールとは、Pythonのコードが書かれたファイルという意味です。

同階層、同じフォルダ、同じディレクトリ内でのインポート

この場合は簡単で、モジュール名(abcdefg.pyというファイルでしたら、拡張子を除いた「abcdefg」がモジュール名)でインポートするだけです。
import abcdefg
abcdefgモジュールの変数や関数が使えます。abcdefg.変数名、abcdefg.関数名というように、最初にabcdefg.をつけてアクセスします。

import モジュール名 as 別名

例えば、このようにインポートすると、別名がつけられます。
import abcdefg as hage
この場合、別名でアクセスできます。
hage.変数名、hage.関数名というように、最初にhage.をつけてアクセスできます。

from モジュール名 import 変数名(または関数名またはクラス名または*)

このパターンを使いますと、モジュール名.変数名という書き方でなく、直接「変数名(または関数名またはクラス名)」だけでアクセスできます。
アスタリスク*を使いますと、すべての変数名(または関数名またはクラス名)をモジュール名.をつけないでアクセスできます。

別階層、別フォルダ、別ディレクトリのインポート

違う階層のモジュールをインポートする時は、sys.path.appendで対象フォルダの絶対パスを追加してから、モジュール名でインポートします。

まずsysをインポート。
import sys
そして、Windowsでの例ですが、インポートするモジュールがあるフォルダまでの絶対パスを追加します。
sys.path.append(r”C:\Users\****\****\test”)
それからモジュール名でインポート
import hogehoge
この場合、testフォルダの中にhogehoge.pyというファイルがあり、それをインポートするという意味です。

簡単な例

例えばこのような階層に、4つのファイルがあるとします。
test1/
 ├ test1.py
 ├ test1_2.py
 └ test2/
   ├ test2.py
   └ test3/
     └ test3.py

test1.py

結果
test1
test1_2
test2
test3

test1_2.py

結果
test1_2

test2.py

結果
test2
test1
test3

test3.py

結果
test3
test1
test2

if __name__ == “__main__”:

if __name__ == “__main__”:は、そのファイルがインポートでなく、直接実行されたらという意味です。
これは、プログラムのファイルがたくさんあった場合でも、一ファイルごとに実行して動作を検証できるので、とても便利です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする