Python

Pythonで別ファイルの関数を使うには?

Pythonで別ファイルの関数を使うには?

前に同一ファイル内に記述した関数を使う方法を調べました。
今回は、別ファイルの関数を使う方法をまとめてみました。

 

どうやって別ファイルの関数を使うの?

import文でサブルーチンのpyファイルを読み込みます。
サブルーチンのpyファイルがどこに保存されているか?で、コードを使い分けなくてはいけません。

サブルーチンの別ファイルを下記のように作ってみました。以下のコード例はこれを呼び出すものになります。

ファイル名「subfile.py」

def subroutine():
    print('サブルーチンファイルから関数の呼び出し成功!')

 

メインもサブも同じフォルダなら?

「import ファイル名」で準備して、「ファイル名.関数名」と書けば、サブルーチンファイルの関数が使えます。
拡張子の「.py」は必要ありません。

import subfile
 
subfile.subroutine()

 

サブファイルが下のフォルダにあったら?

画像のように、サブルーチンのファイルをフォルダにまとめたいケースでの書き方です。
Pythonで別ファイルの関数を使うには?

書き方は、「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文の書き方が変わってくるので注意が必要です。
ログイン処理などは何度も使うので、別ファイルにまとめられるのはとてもありがたいですね。

-Python
-, , , , , , , , , , , ,