【Python】インポートimportでpyファイルの読み込み・処理呼び出し
2020.05.06 /

Pythonでプログラムを作成していると、プログラムの規模が大きくなっていき、1つのファイルではコードが長くなり可読性が悪くなることがあります。
また以前に作ったプログラムから関数を呼び出したい、ということもあります。
そういった場合に使用するインポートimportの使い方や動作について解説いたします。
ファイルの読み込み(インポート)方法
import ファイル名
読み込みたいファイルをインポートする場合、importを使用します。
importするファイル名には。拡張子.pyは入れません。
しかし読み込みファイルが実行ファイルと比べてどの階層にいるかでimportの後に記述する方法が異なります。
実行ファイルと同じ階層ファイルimport・同じ階層ディレクト内のファイルimport・親ディレクトリ内のファイルimport、それぞれの方法について解説いたします。
同じ階層ファイルimport
import target

実行ファイルと同じ階層のファイルをインポートする場合、なにも考えずにそのファイル名を記述するだけで大丈夫です。
同じ階層ディレクトリ内のファイルimport
from dir import target
from dir.dir import target2

実行ファイルと同じ階層にあるディレクトリ内のファイルをインポートする場合、 from ディレクトリ名 import ファイル名 で読み込みたい対象ファイルをimportすることができます。
親ディレクトリ内のファイルimport
import sys
sys.path.append('..'')
import target
from dir import target2

親ディレクトリのファイルをインポートする場合は、sys.path.append('..') などを使い、検索対象のパスを追加して行う方法があります。
読み込みファイル内容が関数の場合
インポートしたファイル内容によって、インポートした直後にコードが実行される場合と関数を実行しない限り動作しない場合があります。
まず読み込んだファイルが関数のみで記述されている場合です。
ファイルをimportした後にその関数を呼び出さない限り、インポートしたファイルの関数は起動しないです。
イメージとしては、importしたファイルに記述されている関数が、実行ファイル内に入る感じです。
main.py
import target
print('main.py')
target.target()
target.py
def target():
print('target.py')
実行結果
main.py
target.py
ファイル名.関数名()でインポートしたファイルから関数を実行できます。
読み込みファイル内容が関数でない場合
読み込みファイルが関数で記述されていない場合、インポートした時点でそのファイル内容が実行されます。
main.py
import target
print('main.py')
target.py
print('target.py')
実行結果
target.py
main.py