このページでは、Pythonのモジュールのインポート方法を見ていきます。
モジュールとパッケージとはなにか、importとfromを使ったインポート、asを使った別の名前での呼び出し方などを見ていきます。
モジュールとパッケージとは
モジュールとは、pythonではファイル(~.py)のことを指します。
パッケージとは、そのモジュールをまとめたディレクトリのようなものです。
インポートすることで、モジュールの中に記述された変数や関数などを使うことができます。
import
モジュールをインポートするときは、「import モジュール名」で行います。
import文は一番最初の行に書くのが一般的です。
例として、標準ライブラリのモジュール「datetime」を使います。
datetimeモジュールは「datetime.py」というファイルが実際に存在します。
これをimportで読み込んだ後、その中に記述されてあるdateクラスのtodayメソッド(今日の日付を返す)を呼び出します。
import datetime
today = datetime.date.today()
print(today)
テキストエディタを開き、上記をコピー、自由に名前(~.py)をつけて保存します。
実行するとターミナルでは次のように表示されました。
※実行方法が分からないという方は「ファイルを渡して起動する」を参考にどうぞ。
2021-09-28
これは私が実行したときの日付です。
もしあなたが実行したら、実行した時の日付が表示されているはずです。
メソッドを呼び出しているところは、
datetime.date.today()
のところです。
呼び出しには「モジュール名.クラス名.メソッド名」で行っています。
ドット(.)を「の中の」と置き換えてみるとわかりやすいかもしれません。
上記を置き換えると、「datetimeモジュールの中の、dateクラスの中の、todayメソッド」になります。
もしモジュールに記述されているのがメソッドではなく、関数のときは、「モジュール名.関数名」のような呼び出し方になるわけです。
fromを使ったimport
「from モジュール名 import モジュール内の読み込むもの」で行います。
今度もdatetimeモジュールを使います。
同じようにdateクラスのtodayメソッドを呼び出します。
from datetime import date
today = date.today()
print(today)
2021-09-28
importで始まる文のときと違うのは、その呼び出し方です。
「クラス名.メソッド名」で呼び出しています。
呼び出しには、fromの後に書かれた名前部分を省略します。
省略して書かないとエラーが出ます。
また上記のコードでは、datetimeモジュールの他のクラスは使えません。
import文と違い、それしか呼べるようにしていないからです。
インポート部分はそのままに、「import文」と「from~import文」、それぞれで今度はdatetimeクラス(ややこしいですが、datetimeモジュールには同じ名前のクラスがあります)のtodayメソッドを呼び出してみます。
import
import datetime today = datetime.datetime.today() print(today)
2021-09-28 11:42:40.470834
from
from datetime import date today = datetime.today() print(today)
NameError: name 'datetime' is not defined
「datetime」が定義されていないとエラーが出ました。
それもそのはずで、fromの方で呼べるのはdateクラスだけで、datetimeクラスのメソッドは使えないのです。
解消するには以下のように書き換えるか、カンマを使って追記します。
from datetime import datetime
from datetime import date, datetime
asを使ったimport
インポートするときに、asを使うと別の名前で呼び出すことができます。
「import 呼び出すもの as 呼び出すときに使う名前」で行います。
import
import datetime as dtime today = dtime.date.today() print(today)
from
from datetime import date as dt today = dt.today() print(today)
呼び出しに使う名前は自由ですが、可読性を損なわないような名前をつけましょう。
データ分析でよく使われる外部モジュール――NumpyやPandasのように、慣例的にasを使ってインポートされるものもあります。
例
import numpy as np import pandas as pd
モジュールの便利な使い方
標準モジュールや外部パッケージなど、素晴らしいものはたくさんありますが、自分がよく使う処理などをモジュールにまとめると再利用することができるようになります。
たとえば、あなたが毎日Pythonを対話モードで起動し、datetimeのtodayメソッドを使用、ターミナルで3回表示させている、としましょう(変な処理ですが、たとえなので気にしないでください)。
これを次のようなモジュールにまとめます。
import datetime
today = datetime.date.today()
def print_today():
for _ in range(3):
print(today)
ではPythonを対話モードで起動し、この「printday」モジュールの「printday_today」関数を呼び出してみましょう。
呼び出し方は上で説明してきたのと同じです。(対話モードを起動したディレクトリ内に「printday」モジュールがあるとした前提です)
Python 3.10.0 (default, Oct 12 2021, 16:02:08) [GCC 9.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import printday >>> printday.print_today() 2022-04-09 2022-04-09 2022-04-09
毎日4,5行書いてきたコードが、2行で済むようになりました。
元のモジュールのコード量が少ないため、それほどありがたみは感じないかもしれませんが、より複雑でたくさんのことをするようになると、より便利さが実感できるでしょう。
今回は関数の呼び出しでしたが、もちろん関数に限らず、クラスや変数なども使えます。
>>> kyou = printday.today >>> kyou datetime.date(2022, 4, 9)
「kyou」という変数に、printdayモジュールで定義されている「today」変数の値を代入しました。
このようにモジュールにまとめて使い回すことで楽ができます。
まとめ
モジュールのインポートについて記述してきました。
モジュールとはpyファイルのこと
パッケージとはディレクトリのようなもの
「import モジュール名」
「from モジュール名 import 読み込むもの」
「import 呼び出すもの as 呼び出すときに使う名前」
自分でモジュールを作って再利用することができる
このページが少しでもお役に立てたのなら幸いです。