前に同一ファイル内に記述した関数を使う方法を調べました。
今回は、別ファイルの関数を使う方法をまとめてみました。
どうやって別ファイルの関数を使うの?
import文でサブルーチンのpyファイルを読み込みます。
サブルーチンのpyファイルがどこに保存されているか?で、コードを使い分けなくてはいけません。
サブルーチンの別ファイルを下記のように作ってみました。以下のコード例はこれを呼び出すものになります。
ファイル名「subfile.py」
def subroutine():
print('サブルーチンファイルから関数の呼び出し成功!')
メインもサブも同じフォルダなら?
「import ファイル名」で準備して、「ファイル名.関数名」と書けば、サブルーチンファイルの関数が使えます。
拡張子の「.py」は必要ありません。
import subfile
subfile.subroutine()
サブファイルが下のフォルダにあったら?
画像のように、サブルーチンのファイルをフォルダにまとめたいケースでの書き方です。
書き方は、「from フォルダ名 import ファイル名」で準備して、「ファイル名.関数名」で実行します。
from SubFolder import subfile
subfile.subroutine()
サブファイルが上のフォルダや別ドライブにあったら?
標準ライブラリ「sys」をインポートし、「.path.append()」を使ってサブルーチンのファイルが保存されているフォルダを指定します。
それから、サブルーチンのファイルをインポートし、実行します。
import sys
sys.path.append('D:\SubFolder')
import subfile
subfile.subroutine()
上記のコードで問題なく実行できるものの、私の「Visual Studio Code」で編集していると波線で指摘されてしまいます。
その場合は、1つ手前のフォルダを指定し、from文と組み合わせてインポートすることで回避することができます。
import sys
sys.path.append('D:')
from SubFolder import subfile
subfile.subroutine()
「__init__.py」が要る?要らない?
今回の投稿を書くにあたり調べていたら、「__init__.py」というワードをよく見かけました。
バージョンが古い(3.2以前)とか、パッケージすることがなければ、特に意識することはなさそうです。
まとめ
Pythonで別ファイルの関数を使うには、インポートしてから実行します。
別ファイルの保存場所によってimport文の書き方が変わってくるので注意が必要です。
ログイン処理などは何度も使うので、別ファイルにまとめられるのはとてもありがたいですね。