[Python]モジュールのimport

Python

このページでは、Pythonのモジュールのインポート方法を見ていきます。

モジュールとパッケージとはなにか、importとfromを使ったインポート、asを使った別の名前での呼び出し方などを見ていきます。

 Androidアプリを作成しました。
 感情用のメモ帳です。

スポンサーリンク
スポンサーリンク

モジュールとパッケージとは

モジュールとは、pythonではファイル(~.py)のことを指します。

パッケージとは、そのモジュールをまとめたディレクトリのようなものです。

インポートすることで、モジュールの中に記述された変数や関数などを使うことができます。

モジュール――Python 3 ドキュメント

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 呼び出すときに使う名前」

自分でモジュールを作って再利用することができる

このページが少しでもお役に立てたのなら幸いです。

タイトルとURLをコピーしました