今日はPythonの絶対的インポートと相対的インポートの違いについて学びます。
プログラムの中で何かを実装するために直接関数が必要なときはいつでも、適切なライブラリから直接インポートすることができますね では、Pythonプログラミングにおける絶対的インポートと相対的インポートについて学んでいきましょう。
絶対インポートとは?
絶対インポートでモジュールをインポートする場合、import
キーワードの後にモジュールのフルパスを含める必要があります。
フルパスには、メインモジュール/ライブラリと、プログラムで使用されるサブモジュールや関数が含まれます。
絶対輸入のメリット
- この方法は、明確でわかりやすく、理解しやすい
- 絶対インポートコマンドは、インポート文の現在の位置が後で変更されても、有効です。
絶対輸入のデメリット
ルートモジュールのより深い層に存在する関数をインポートしなければならないとしましょう。
このようなモジュールの絶対インポートコマンドは、次のようになります。
from package_1.sub_package_1.sub_package2.sub_package3.module1 import req_function
|
もし、必要な関数がさらに深い階層に存在するとしたら、本当に面倒で複雑なことになります。
そんなとき、相対インポートが役に立ちます。
Relative Importing とは何ですか?
相対インポートとは、あるパッケージやサブパッケージの位置から相対的に関数をインポートすることで、より良いモジュールや関数のインポートを実現する方法です。
相対インポートのアプローチには、暗黙的なアプローチと明示的なアプローチの2種類がありますが、暗黙的なアプローチはPython3.xバージョンではもうサポートされていません。
相対的なインポートの方法は以下の通りです。
from .sub_package_x.module_5 import req_function
|
最初の .
は以前のホストモジュール/ライブラリのすべてを考慮し、絶対インポートのようにすべてを記述する必要はありません。
相対輸入のメリット
- import文が短くてすっきりしている。
- インポート文の複雑さが軽減される
相対輸入のデメリット
- この方法はあまり読みやすくなく、プログラマは多くのルートモジュールに気づかない。
-
- プログラマはインポートする関数の起源を知らない
結論 – 絶対的インポートと相対的インポート
絶対的インポート方式と相対的インポート方式の基本的な違いはおわかりいただけたと思います。
初心者のうちは絶対的なアプローチを、コーディングの経験を積んだら相対的なアプローチを使い始めることをお勧めします。