ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

【Python】別の.pyファイルを呼び出して実行する方法とその意義

別の.pyファイルに保存したスクリプトを呼び出す方法とその意義を解説します。まず、その意義からから始めます。

目次

別ファイルの.pyスクリプトを呼び出す

Pypthonのスクリプトを実行するにはコマンドラインにPythonコードを書いて対話的に実行する方法と.pyと言う拡張子を持ったバイナリファイル*1を実行する方法の2つが存在します。今回は.pyファイルに記述されたスクリプトを実行する方法とその意義を解説します。

pyファイルを呼び出して実行する意義

Pythonで別ファイルの内容を呼び出す方法を解説する前に、その意義を確認します。理由を知って納得感を持って実装しましょう。

オブジェクト指向という考え方

プログラムからプログラムを呼び出す理由は、機能と処理を分離するためです。どういうことかというと、ある機能をもったプログラムの塊を用意しておいて、それを使うタイミングで呼び出そうと言う事です。こうすることによって一つの長いプログラムではなく、機能を実装した短いプログラムとそれを呼び出す短いプログラムに分離することができます。

短いプログラムはエラーが出にくいし、出ても修正が簡単です。また、機能と処理を分離することで、処理の流れが変わったときにも利用する機能が変わったときでも、その部分だけを改修することが容易です。これが、一つの大きなプログラムだと、一部を修正すると別の所に予期せぬ影響を及ぼすかも知れません。

独立した部分に分けて作っておけば、修正が必要な部分だけ修正すればその他の部分に影響が及ぶことはなくなります。そして、機能の集まったモノを呼び出して使う考えをオブジェクト指向と言います。今回はオブジェクトは出てきませんが、処理と流れを分離するという概念は同じです。

また、必要な機能を呼び出すという考え方に通じる考え方としてUNIXの哲学*2というものがあります。併せてご参照下さい。

pyファイルを呼び出して実行する方法

別ファイルのスクリプトを呼び出す事の意義が分かったところで、実際に呼び出す方法を見て行きます。

スクリプトごと呼び出して実行する

結論から言うと、importを使って呼び出す事ができます。実際に具体的なサンプルコードを提示するために呼び出すファイルと、呼び出されるファイルをまず作成します。

  • 呼び出す方のファイル:nagare.py
  • 呼び出される方のファイル:kinou.py

呼び出す方のファイルはプログラムの流れを記述するため、nagare.pyという名前にしました。一方、呼び出される方のファイルは使いたい機能が書いてあるため、kinou.pyという名前にしました。

今回のサンプルは、税込み価格を求めるプログラムです。

#呼び出す方のファイル:nagare.py

import kinou

たったの一行のプログラムです。次にkinou.pyを作成します。

#呼び出される方のファイル:kinou.py

print('税抜き価格を入力して下さい')

tax_rate = 0.1 #消費税は10%
ex_price = int(input()) #税抜き価格を受け取る
int_price = int(ex_price * (1 + tax_rate))  #税込み価格を計算する

print('税込み価格は{}です'.format(int_price))

コマンドラインからnagare.pyを実行してみましょう。実行結果は下記の様になりました。

コマンドラインから実行したのはnagare.py
nagare.pyを実行して、kinou.pyを呼び出した結果

プログラムがプログラムを呼び出す所を観察できました。

pyファイル内にある関数を呼び出す

次に処理と流れと言うことをもう少し意識するために、消費税の計算の機能だけを分離することにします。呼び出す方のファイルをまず作成します。

#呼び出す方のファイル:nagare.py
import kinou

print('税抜き価格を入力して下さい')
ex_price = int(input()) #税抜き価格を受け取る

int_price = kinou.taxcalc(ex_price) #kinou.pyで定義した関数を呼び出して税込み価格を計算する

print('税込み価格は{}です'.format(int_price))

今回は税込み価格を計算する機能だけを分離することにしました。次に呼び出される側のファイルを作成します。

#呼び出される方のファイル:kinou.py
def taxcalc(zeinuki):
    tax_rate = 0.1 #消費税は10%
    zeikomi = int(zeinuki * (1 + tax_rate))  #税込み価格を計算する

    return zeikomi

taxcalcと言う関数を定義しました。カッコの中にzeinukiと言う変数名が書かれています。これは、この関数の中で使う変数名です。呼び出す方ではex_price という変数に入れてtaxcalcに値を渡し、taxcalc側ではzeinukiという変数で受け取って処理しました。

渡すときの変数名と受け取るときの変数名を同じにして説明しているいるサンプルコードをよく見かけますが、渡すときの変数と受け取るときの変数が別のものであるという事を明確に説明するために、このような別の変数名にしました。

戻り値も同様でzeikomiと言う変数に入れて戻し、呼び出す側のファイルではint_price という変数で受け取っています。

この記事では今まで.pyファイルのことをスクリプトと言ってきました。このサンプルコードではimportを冒頭に持ってきています。これはまさにモジュールをインポートしているのと同じですよね。と言うわけで、2つめのサンプルコードはpyファイルを呼び出すと言うよりモジュールを自作して、その中に入っている関数を使ったと言う事になります。

ということは、似たような機能や特定の場面で使う事を想定した関数やクラスをまとめて一つの.pyファイルに集めることでモジュールにしておくことができると言うことです。

これはプログラムが分かりやすくなるだけでなく、使い回すことで、プログラミングの効率も上がりますね。

.pyスクリプトを呼び出す方法とその意義まとめ

以上、別ファイルの.pyを呼び出して実行する方法とその意義でした。簡単にまとめます。

  • importで別のpyファイルのスクリプトを呼び出して実行できる
  • 機能をまとめておくことはすなわち、モジュールを作る事
  • 機能と処理を分離するという考え方をする

これからは長いプログラムを書くのではなく、短い機能と短い処理を組み合わせてプログラムを作成するようにしましょう!

<関連記事>

*1:テキストファイル以外のファイルは何でもバイナリファイルです

*2:UNIX哲学 - Wikipedia