Pythonでのライブラリのインポートの意味や書き方など基本的な事を、実際に動作するサンプルプログラムを用いて簡単に説明します。
ライブラリとは
厳密に言えばライブラリという言葉の定義はないそうで、多分、一般的にはライブラリ=パッケージやモジュールになっていると思います。
パッケージの中にモジュールがあります。
パッケージをインストールしたらモジュールが使えるというようなニュアンスです。
ライブラリは定義はないですが、一般的にはそれらの総称という感じですかね。
モジュールの種類
3種類あります。
- 標準モジュール
- サードパーティ製のモジュール
- 自作したモジュール
モジュールのインストールが必要なのは、2番目の標準じゃないサードパーティ製のモジュールということになります。
モジュールのインポート
基本的なインポートの書き方
以下のようにimport モジュール名
と書きます。
import pandas
基本的なインポートでエラーが出る場合の書き方
基本ではエラーがでるモジュールがあります。
なぜエラーが出るかというと簡単に言えば、パッケージの作りが違うからです。
その作りに合わせたインポートは以下のようにfrom パッケージ名 import モジュール名
と書きましょう。
パッケージ名を指定する必要があるということです。
from pyti import simple_moving_average
クラスや関数、変数を指定してインポートする書き方
オブジェクト(クラスや関数、変数)を指定するには、以下のようにfrom モジュール名 import オブジェクト名
と書きます。
上記のパッケージ名を指定するというのと同じ書き方ですが、意味合いが違います。
まぁ気にしないでいきましょう。
from time import sleep # システムを1秒間止める sleep(1)
オブジェクト(クラスや関数、変数)を指定しない場合は、以下のように書く必要があります。
import time # システムを1秒間止める time.sleep(1)
複数のオブジェクト(クラスや関数、変数)を指定する
複数のオブジェクト(クラスや関数、変数)を指定するには、以下のようにカンマ区切りでオブジェクト名を指定します。
from time import sleep, localtime sleep(1) print(localtime()) # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=23, tm_hour=21, tm_min=0, tm_sec=19, tm_wday=5, tm_yday=144, tm_isdst=0)
クラスや関数、変数を指定せずに全て個別にインポートする書き方
from time import *
というようにオブジェクト名のところをアスタリスク(*
)にすると読み込みます。
from time import * sleep(1) print(localtime()) # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=23, tm_hour=21, tm_min=0, tm_sec=19, tm_wday=5, tm_yday=144, tm_isdst=0)
しかし、この書き方は推奨されていないそうで、さらに私が開発で使っているVisual Studio Codeではインポートを認識せずに、エラーの勧告が表示されて鬱陶しいです。
可能な限り、これは避けましょう。
モジュールやオブジェクトを別名でインポートする書き方
以下のようにimport モジュールやオグジェクト名 as 別名
とします。
import numpy as np import pandas as pd from pyti import simple_moving_average as sma
NumpyやPandasはnpとpdとするのが世界共通のようにこのようにインポートしていますので、右にならえしましょう。
また、上記のsimple_moving_averageに長い名前もありますので、smaとした方が綺麗になります。
ちなみに、smaは投資のチャートで使う単純移動平均線のモジュールです。
インポートの順番
システムを作っていると多くのモジュールをインポートすることになりますが、基本的には以下の順番でインポートした方がいいようです。多分、不具合のリスク回避だと思います。
それにその方が、システムの管理もしやすいかと思いますので、出来るだけ従ってください。
- 標準モジュール
- サードパーティ製のモジュール
- 自作したモジュール
以下の感じですね。
import numpy as np import pandas as pd from pyti import simple_moving_average as sma import mymodule
コメント