Daily note

ソフトウェア技術に関する些細なことをメモしていく予定です。

【Python】from, importの使い方

概要

モジュールをインポートして利用する場合に使用するfromとimportについてPython3.5.3で使い方を検証してみました。 モジュールをインポートする方式として静的にインポートするケースと動的にインポートするケースがあるようですが、 from、importは静的にモジュールをインポートするケースです。

import文のみでインポート

  • import モジュール名

モジュール全体(内部で定義されているクラスや定数等)をインポートできるが、 コードに記載する場合に、モジュール名を記載しなければなりません。

~$ python3
>>> import math
>>> math.pi
3.141592653589793

from文でインポート

  • from モジュール名 import シンボル名

モジュール全体ではなく、特定のシンボル(クラス名、関数名、定数等)だけを直接インポートします。 コードに記載する場合に、モジュール名は記載する必要がありません。

~$ python3
>>> from math import pi
>>> pi
3.141592653589793

asで別名をつける

  • import モジュール名 as 別名

別名を使用した場合、別名でしかアクセスできません。 元のモジュール名ではアクセスできません。

~$ python3
>>> import math as m
>>> m.pi
3.141592653589793
>>> math.pi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'math' is not defined
  • from モジュール名 import シンボル名 as 別名
~$ python3
>>> from math import pi as PI
>>> PI
3.141592653589793
>>> pi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'pi' is not defined

複数のシンボルを同時にインポート

  • from モジュール名 import シンボル名1,シンボル名2

カンマ区切りで同時に複数のシンボルをインポートできます。

~$ python3
>>> from math import pi, fsum
>>> pi
3.141592653589793
>>> fsum([1.1, 2.2])
3.3000000000000003

失敗例

  • import文のみで特定のシンボルだけインポート
~$ python3
>>> import math.pi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'math.pi'; 'math' is not a package