とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub

Python 実践的なimportの書き方

WindowsでPython シリーズ その22



Python モジュール定義の基礎の基礎でimport処理の基礎をやったけど、多分実践では使えない。

というわけで、今日はモジュールのimport処理についてまとめます。

別ディレクトリのimport方法


main.py を作って、そこから子ディレクトリのモジュールを呼び出します。
階層は以下の通り。
main.py

└─【util】
   │ custom_print.py
   │
   └─【calc】
        math.py

【】でくくられているのがディレクトリです。
main.pyから、utilのcustom_print.pyと、さらに子改装にあるmath.pyを呼び出します。

それぞれのファイルは以下の通り
math.py


custom_print.py


main.py


実行結果
Python 別ディレクトリのimport方法
解説
import キーワードで別階層のモジュールを呼び出したい場合は「.」(ドット)で区切ります。
さらに子階層の場合は同じように「.」(ドット)をつなぎます。
importしたモジュールを呼び出したい場合も同じようにimportした名前をドットでつなぎます。
うん。使いにくい。

実際に使えるimport宣言


importの書き方を試してみたけど、いちいち
util.custom_print.write_line(util.calc.math.add(1,2))
なんて書いてられない。
長すぎる。

というわけで、Pythonにはimport宣言方法が色々あるんだけれども
コレだなという書き方をメモしておきます。

import処理の書き方


実行結果
Python 使えるimportの書き方

多分この2つの書き方が一番いい。
解説
2つの書き方をしたので解説します。
from (モジュール名『ファイル名』) import (関数名) as (別名)

from util.custom_print import write_line as printline


このように書くと、特定のファイルから、どの関数を、こんな名前で呼び出す宣言ができる。
対して

import (モジュール名『ファイル名』) as (別名)

import util.calc.math as math

と書くと、特定のファイルを別名で呼び出すことができるという指定になる。

前者の方は、モジュールの中の特定の関数を宣言する。
後者の方は、モジュールをのものを別名で宣言する。

という挙動になっている。

モジュール(ファイル名)の位置が、fromの後ろかimportの後ろかで異なっていることは注意したい。

このように定義することで

util.custom_print.write_line モジュールのwrite_lineを printline として呼び出しているし
util.calc.math モジュールをmathの別名で指定し、その中の関数を呼び出すことができる。

まとめてimportする方法


ちなみに、import文はカンマで続けて書くことができる。
import file1, file2, file3
こんな感じ。
個人的には明確に何をimportしているかひと目で分かるようにしたいのでimport文は改行して全部書いた方が良い気がします。

importの大切さ


同じファイルに処理を書きすぎると人間の脳味噌がついていかないから、
それなりの規模のプログラムをする場合にファイルを分ける。
その場合、import無しというのは考えられない。

というわけでこの処理は非常に大切です。

今回はmain.pyが最も上流階層に存在する場合の例を書いたけど、それもそんなわけには行かない場合がありますね。
次回は親階層に存在するモジュールのimportを記載します。
では!

次のページ

FC2Ad