Pythonのimportの使い方
Pythonのimportの構文
import文は、指定したモジュールを読み込むための命令。構文は以下の通り。
import_stmt ::= "import" module ["as" identifier] ("," module ["as" identifier])* | "from" relative_module "import" identifier ["as" identifier] ("," identifier ["as" identifier])* | "from" relative_module "import" "(" identifier ["as" identifier] ("," identifier ["as" identifier])* [","] ")" | "from" relative_module "import" "*" module ::= (identifier ".")* identifier relative_module ::= "."* module | "."+
関連)7. 単純文 (simple statement) — Python 3.10.4 ドキュメント
実際に組み合わせて良く使われるのはfromとasです。
なお、存在しないモジュールを呼び出そうとすると、No module named…というエラーが出力されます。以下は、モジュールxyzをimportしようとしてエラーになった例です。
>>> import xyz Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'xyz'
Pythonのimportのfromの意味
from指定で、対象モジュールの中の特定のサブモジュールや関数だけをimportできます。
必要な部分だけimportすることでメモリの節約をする…というメリットはあまりありません。現在は、パソコンでさえ大容量メモリを積んでいることが多いからです。
どちらかというと、必要機能を呼び出すために、記述を短くしたいという目的で使われることが多いようです。
例えば、abcというモジュールがあって、その下位にdef、さらに下位にghi、その下にxxxという関数が存在する場合。最上位のabcモジュールだけをimportする場合は、以下のような記述になります。
import abc sts = abc.def.ghi.xxx(0,0)
以下のように、abc.def.ghiモジュールだけをインポートすれば、関数の呼び出しの記述を短くできるんですね。
from abc.def import ghi sts = xxx(0,0)
Pythonのimportのasの意味
importのasを指定すると、モジュール名に別名をつけることができます。モジュール名が長い場合に、コードをシンプルにしたいなーというときに使うんですね。
import numpy as np a = np.array([0,1,2]) print(a)
上記は、numpyというモジュール名をas指定でnpと別名をつけた例です。
コード内にnumpyというモジュール名が出まくる場合は、asを使うことでいっきに見やすくなります。
Pythonのimportで自作モジュールを読み込む
Pythonで自作モジュールをインポートするサンプルコード
自作のクラス定義や関数定義をおこなった.pyファイルをimportすることが可能です。
例えば、自作関数を定義したaaa.pyを用意します。
$ cat aaa.py def mytest( a ): print ( a )
カレントディレクトリにaaa.pyを配置して、以下のようにimportします。ファイル名から.pyを除いた文字列を指定すればOKです。
>>> import aaa >>> aaa.mytest("xxx") xxx
importで探索するパスは、sys.pathで確認できます。パスの最初の”はカレントディレクトリを表しています。
>>> import sys >>> sys.path ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
Pythonのimportのまとめ
- importはPythonのモジュールを読み込む命令
- from指定でモジュールの階層を、as指定でモジュールに別名をつけることができる
- 自作モジュールをimportする場合は、sys.pathのパスに.pyファイルを配置する