【第14回PYTHON講座】別のファイルの関数を使ってプログラム作成

PYTHON

以前に作った関数を使いたい時や、何度も同じ関数を使う時など、毎回同じコードを書くのは面倒ですよね。

そういう時は、別ファイルにコードを書いておき、新たにプログラムを作成する時に、以前書いていたファイルから関数を呼び出すことをした方が効率的で楽です。

今回は別ファイルの関数を使ってプログラムを作成します。

別ファイルに『こんにちは』、『こんばんは』、『四角形を面積を出力』する3つの関数定義し、メインプログラムから呼び出すプログラムを作成します。

呼び出される側のプログラムの作成

まずは呼び出される側のプログラムを作成します。

externalpython.pyという名前でファイルを作り、下記のコードを入力します。

def hello(namein):
    print(f"こんにちは、{namein}さん")

def evening(namein):
    print(f"こんばんは、{namein}さん")

def keisan(tate, yoko):
    return tate * yoko

メインプログラムを作成

メインプログラムをmain.pyという名前で作成します。

import externalpython

externalpython.hello('田中')

externalpython.evening('佐藤')

print(externalpython.keisan(5, 5))

1行目:呼び出される側のファイル名をexteranlpython.pyとしたので、呼び出されるライブラリ名がexternalpythonとなります。

3行目:呼び出される関数を書き、コンマを入力すると、下記のように、ライブラリ内の関数が表示されるようになります。

実行してみると、下記の通り表示されます。簡単ですよね。

関数名を短くする

ライブラリ名externalpythonという名前は長いですよね。もっと簡単にすれば、後から関数を書くのも楽になります。

ファイル名を短くすることでライブラリ名を短く出来ますが、ファイル名はユニークにしなければいけないので、短いと重複してしまうこともあったり、ファイル名からどのような関数のライブラリかを想像することが難しくなります。その場合、最初の定義で下記の通りし、以後のコードを変更します。

import externalpython as expy

expy.hello('田中')

expy.evening('佐藤')

print(expy.keisan(5, 5))

この場合はasですね。3,5,7行目がすっきりしました。

ファイル名は関数を想像しやすい名前にして、コード内でasを使ってライブラリ名を短くしましょう。

ファイルの保存先が違う場合の呼び出し方

先ほどのプログラムは、同一のフォルダで保存されています。もし、呼び出されるファイルが、メインファイルと異なるフォルダに保存されている場合、上記のコードでは『ライブラリが無い』というエラーが出てしまいます。

PYTHONは『標準のライブラリフォルダ』と、『メインファイルと同一のフォルダ』にライブラリファイルを検索します。もし、これら2つと違うフォルダに保存されていれば、ライブラリを呼び出す前にそのライブラリファイルの場所を指定しなければなりません

例えばexternalpython.pyが、C:/Labo/に保存されている場合を考えます。

方法①絶対パス

ライブラリを呼び出す前に下記のコードを加えて下さい。

こうすることで、次にimportするライブラリの場所を指定することが出来ます。

import sys

sys.path.append('C:/Labo/')
import externalpython

方法②相対パス

呼び出し側のプログラム自体も、複数のプログラムファイルでなっている事もあります。その場合、main.pyの場所にフォルダを設けて、作っていく可能性もありますし、プログラムファイルを他で使うことになれば、相対パスの方がいい時もあります。

下記の構成でプログラムを作った場合を考えます。

def hello(namein):
    print(f"こんにちは、{namein}さん")

def evening(namein):
    print(f"こんばんは、{namein}さん")
def keisan(tate, yoko):
    return tate * yoko
from foldera import suba
from foldera.folderb import subb

suba.hello('田中')
suba.hello('佐藤')

print(subb.keisan(5,5))

main.pyの1行目:フォルダ名folderaからライブラリsubaを呼び出しています。

main.pyの2行目:フォルダ名folderbを呼び出すために、foldera.folderbと間のコンマ『.』で繋げて、ライブラリsubbを呼び出しています。

若干、解りにくいファイルの呼び出し方ですが、実際は、ここまで複雑になることはありません。

まとめ

いかがだったでしょうか。

外部ファイルでの関数の呼び出し方法が分かりましたでしょうか。

簡単に説明するために、短いプログラム文になりましたが、大きなプログラムを作る時には、関数を別ファイルにまとめて作成すると、デバッグなどがしやすくなり、効率が良くなります。

一番重要な事は、『どこにファイルを保存し、import』するかです。

是非、上記を憶えておいてください。

PYTHON
スポンサーリンク
シェアする
フォローする

コメント

タイトルとURLをコピーしました