別のPythonファイルの処理を呼び出す - 別のpyファイルのコードを実行する - Python

Pythonで別のファイルのコードを呼び出すコードを紹介します。

概要

Pythonでプログラムの規模が大きくなってくると1つのコードファイルではコードが長すぎて可読性が落ちます。コードを見やすくすることや、処理をわかりやすくまとめるためにコードを別のPythonのファイルに記述したいことがあります。
別のファイルのコードを実行する場合は、import キーワードを利用します。

書式

import (インポートするファイル名)
関数呼び出し
(インポートするファイル名).(関数名)()

プログラム例1 (呼び出し先が関数でない場合)

コード

ImportDemo.py (メインのコードファイル)
print('Start Main')

import ImportDemoSub

print('End Main')
ImportDemoSub.py
print('Start Sub')

print('End Sub')

解説

プログラムを実行するとメインのコードファイルから実行されます。最初に 'Start Main' のメッセージを画面に表示します。続いて import 文が実行され、ImportDemoSub.py ファイルが実行されます。ImportDemoSub.py ファイルでは 'Start Sub' 'End Sub' のメッセージを画面に表示します。ImportDemoSub.pyファイルの処理が終わると、元のファイル(ImportDemo.py)の import文の次の行から実行が再開され、'End Main' メッセージを画面に表示します。

実行結果

上記のプログラムを実行します。下図の画面が表示されます。別のPythonのコードが実行できていることが確認できます。

プログラム例2 (呼び出し先が関数の場合)

呼び出し先のPythonのコードが関数が定義されている場合の呼び出しコードを紹介します。

コード

ImportFunctionDemo.py (メインのコードファイル)
import ImportFunctionDemoSub

print('Start Main')
print('1つめの数値を入力してください')
valuea = int(input())
print('2つめの数値を入力してください')
valueb = int(input())

reta = ImportFunctionDemoSub.proc1(valuea, valueb)
retb = ImportFunctionDemoSub.proc2(valuea, valueb)

print('(proc1, proc2)=({0}, {1})'.format(reta, retb))
ImportFunctionDemoSub.py
def proc1(a, b):
    return a+b

def proc2(a,b):
    return a-b

解説

呼ばれる側が関数のみで記述されているため、最初の行に import 文を記述します。
プログラムを実行するとメインのコードファイルから実行されます。最初に 'Start Main' のメッセージを画面に表示します。続いて printとinputが実行され1つ目の値の入力を受け付けます。その後2つ目の値の入力を受け付けます。2つの値の入力が終わると、ImportFunctionDemoSub.py の proc1 と proc2 の関数を呼び出し戻り値を取得します。
最後にprint文で proc1 と proc2 の戻り値の値を画面に表示して終了します。

実行結果

上記のプログラムを実行します。下図の画面が表示されます。
1つ目の数値を入力します。


1つ目の数値を入力すると下図の画面が表示されます。2つ目の数値を入力します。


proc1, proc2 が呼び出されて入力した2つの数値の和と差が画面に表示されます。別ファイルにある関数が呼び出されていることが確認できます。

プログラム例3 (クラスを利用する場合)

クラスを利用してコードを分割する方法もあります。クラスの記述についてはこちらの記事を参照して下さい。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2019-06-16
iPentec all rights reserverd.