#はじめに
pythonを書いていると、importと書かれた下記のような記述が必ずと言ってよいほど登場します。
import sys
おまじない的にコピぺして使っていたのですが、だんだん避けては通れなくなってきたのでちゃんと調べてみました。
##目次
- モジュールとは
- 基本のimport
- fromを使ったimport
- 複数オブジェクト(関数)のimport方法
- *(ワイルドカード)を使ったimport
- モジュール読み込みとオブジェクト読み込みの違い
- 別名でのimport
##モジュールとは
Pythonでは関数やクラスなどをまとめて書いたファイルをモジュールと呼びます。.pyファイルの事です。
モジュールを複数まとめたものをライブラリと呼ぶようです。
Pythonには標準ライブラリが存在していて、importすることで利用可能となります。
##基本のimport
そのモジュールを読み込むのがimport
です。以下のようにimport <モジュール名>
とするとモジュールがmodule型のオブジェクトとしてインポートされます。
import math
mathがモジュールとしてインポートされている事はtype
でプリントするとわかります。
import math
print type(math)
>>>
<type 'module'>
>>>
##fromを使ったimport
モジュール内の関数やクラスを直接importする事も可能です。
from <モジュール名> import <関数名>
でインポートできます。
importした関数は、名前を指定する事で実行可能です。
関数に限らず変数、クラスをimportすることもあるので、以下では <オブジェクト>と表記します。
from math import pi
print(pi)
>>>
3.141592653589793
>>>
オブジェクトを指定してimportした場合、mathモジュールはインポートされていません。
from math import pi
print type(math)
>>>
NameError: name 'math' is not defined
>>>
####複数オブジェクトのimport方法
複数のオブジェクトを同時にimportすることも可能です。
from math import pi, radians
モジュールを読み込むときは、PIP8では下記の記述が推奨されてるとのことで、注意が必要です。
# NG
import os, sys
# OK
import os
import sys
##*(ワイルドカード)を使ったimport
*(ワイルドカード)を使うと全てのオブジェクトをimport可能です。ただし少々乱暴なimport方法なのであまり推奨されないようです。
from math import *
##モジュール読み込みとオブジェクト読み込みの違い
モジュールだけを読み込んだ時と、オブジェクトを読み込んだときでは、実行時の記述が異なります。
####モジュールのみの読み込みの時
モジュールのみを読み込んだときは、関数を実行する際に<モジュール名>.<オブジェクト名>
という指定が必要になります。
import math
print(math.pi)#<モジュール名>.<オブジェクト名>
####オブジェクトの読み込み時
オブジェクトを読み込んだときは、<オブジェクト名>
のみの指定で実行可能です。
from math import pi
print(pi)#<オブジェクト名のみ>
####間違い例
モジュールだけを読み込んだ状態で、直接オブジェクト名だけを指定するとエラーになります。
import math
print(pi)
##別名でのimport
モジュールやオブジェクトに任意の名前を付けて呼び出す事も可能です。
import math as m
print(m.pi)
from math import pi as pai
print(pai)
##参考にしたサイト
https://note.nkmk.me/python-import-usage/