python♪基本:importで読み込むのはパッケージ?モジュール?関数?

 ここでは、import文の使い方を勉強します。わからないうちは、コピペするだけのつまらないimport文ですが、意味や書き方がわかれば、少しだけimport文に親しみがわいてきます。「どうなるんだろう・・・」と悩みそうなポイントを網羅しました。入門書では、説明を後回しにする部分ですが、使い方を整理します。

0.ゆうちゃんとPythonシリーズ

この記事は「ゆうちゃんとPythonシリーズ」の記事です。一連の記事は、以下のリンク集を参照してください。

中学生のゆうちゃんとPythonシリーズ

なお、それぞれの記事は、シリーズの中でそれまでに習った文法を使ってサンプルコードを考えています。実際には、もっと、効率のよい書き方があるかもしれませんが、ご了承ください。

1.import文を勉強する前に

import文とは便利な道具を読み込む命令文です。なお、この記事は、以下の記事を読んでいることが前提で作られています。「パッケージ」「モジュール」「関数やクラス」「ライブラリ」の違いがわからないかたは、以下の記事を先に読んでください。

基本:簡単なfor文とrandom関数を使ってグラフを表示しよう

なお、覚えておくべきことは、この記事の最後の「5.まとめ」にまとめてあります。 「5.まとめ」 の内容がわかれば、記事本文の細かい内容まで読む必要はありません。

単にライブラリを使うという目的だけならば、それぞれのライブラリで、importの書式を暗記するだけよいのですが、前途ある、ゆうちゃんがPythonの勉強をするということは、Pythonを通じて情報処理の勉強をすることでもあると思います。モジュール、パッケージ、ライブラリの違いに慣れ、イメージを具体的にすることが、今回の狙いです。

また、この記事では、グラフを描画するときに使うmatplotlibライブラリを例にあげて説明します。「matplotlib.pyplot.plot(x, y, marker = ‘.’)」という命令文において、matplotlibは「パッケージ」、pyplotは「モジュール」、plotは「関数」ですので、それに注意しながら読み進めてください。

そして、これからimportを使うときには、読み込むものがパッケージなのか、モジュールなのか、それとも関数なのかを意識して使うようにしましょう。

2.パッケージ、モジュール、ライブラリの簡単な復習

それでは、最初に「 基本:簡単なfor文とrandom関数を使ってグラフを表示しよう 」の記事の中で説明したパッケージ、モジュール、ライブラリについて簡単に復習します。

(1) 「モジュール」と「パッケージ」

 Pythonのコードが書かれた拡張子が.pyのファイルが「モジュール」です。モジュールに、関数やクラスなど、便利なツールを記述することで、他のモジュールから呼び出すことができます。一方、複数のモジュールをフォルダで整理し、ひとまとまりにしたものを「パッケージ」といいます。

(2) 「ライブラリ」

「ライブラリ」の定義は厳密ではなく、一般には、ライブラリは他のモジュールから呼び出すことを前提に作成された汎用的なプログラムのことを指します。Pythonでは、ライブラリが特定の「モジュール」のことを指すこともありますが、「関数」「モジュール」「パッケージ」などを広く含めてライブラリと呼ぶこともあります。

モジュールであるrandomも、パッケージであるmatplotlibも、広い意味ではライブラリです。

3.importによる読み込みと関数の実行例

 importでライブラリを読み込む書式には、大きく分けて以下の2つの書式があります。それぞれ、どのようにライブラリを読み込み、実行する方法があるのかを一覧表にまとめます。

書式1:import 〇〇.△△.□□
書式2:from 〇〇.△△ import □□

(1) 書式1:import ○○.△△.□□タイプ

コード01は書式1「import ○○.△△.□□」によるmatplotlibの使用例です。3行目でmatplotlibパッケージのpyplotモジュールを読み込み、8行目、9行目でそれぞれplot関数、show関数を実行しています。

#コード01
import random
import matplotlib.pyplot

for i in range(1000):
    x = random.uniform(-1.0, 1.0)
    y = x ** 2
    matplotlib.pyplot.plot(x, y, marker='.')
matplotlib.pyplot.show()

出力01

(a) import ○○.△△.□□タイプ の実行例

import ○○.△△.□□タイプ の読み込みと、関数の実行例をまとめた表です。いずれの場合も「matplot.pyplot.plot(x, y)」と記述することで「plot」関数が実行できます。「import matplotlib」では、「matplotlib」パッケージをすべて読み込み、「import matplotlib.pyplot」では、 matplotlib」パッケージ のなかの「pyplot」モジュールのみを読み込んでいます。

「pyplot」モジュールの関数しか使わない場合は、 「import matplotlib.pyplot」 の方が、読み込み時間やメモリーを少し節約できます。

(b) import ○○.△△.□□タイプ のn.g.集

  import ○○.△△.□□タイプ で読み込んだ場合は、実行するときに○○.△△の部分を省略することはできません。なお、import文の最後の□□の部分は、パッケージやモジュールを指定することはできますが、関数やクラスを指定することはできません。

(2) 書式2:from ○○.△△ import □□タイプ

コード02は書式2「from ○○.△△ import □□」によるmatplotlibの使用例です。3行目でmatplotlibパッケージのpyplotモジュールを読み込み、8行目でplot関数、9行目でshow関数を実行しています。なお、出力はコード01と同じです。

#コード02
import random
from  matplotlib import pyplot

for i in range(1000):
    x = random.uniform(-1.0, 1.0)
    y = x ** 2
    pyplot.plot(x, y, marker='.')
pyplot.show()

(a) from ○○.△△ import □□タイプ の実行例

from ○○.△△ import □□タイプ の読み込みと、関数の実行例をまとめた表です。いずれも、 importしたライブラリを実行するときには、 fromのあと、importの前の部分を省略することができます。例えば「from ○○.△△ import □□」の「〇〇.△△」の部分部分は省略できます。 正確には「できる」ではなくて、省略しなければなりません。実行時の記述量を減らすことができるので便利です。

なお、書式1と異なり、importの後の「□□」の部分に、関数やクラスなどを直接 記述することが可能です。つまり、□□の部分は、パッケージやモジュールだけではなく、関数、クラス、変数なども指定することができます。

(b) from ○○.△△ import □□タイプ のn.g.集

import の後は、△△.□□といったように、ピリオドを使った表記はできません。つまり、例えば「from 〇〇.△△ import □□」を「from 〇〇 import △△.□□」と書き換えることはできません。

4.「as」で長い名前を別の名前に置き換える

ライブラリをimportするときに、import文の最後に「as 別名」を追加することで、ユーザーが自分で定義した自由な名前に置き換えることができます。例えば、コード03では、import文の最後にas pltをつけることで、「matplotlib.pyplot」を「plt」という名称に置き換えています。入力するのが嫌になりそうな「matplotlib.pyplot」が、たった3文字になるのですから、非常に楽です。

それでは、「as plt」を使ったコード03と、コード01を並べてみます。どの部分がpltに置き換わるのかを確認してください。

#コード01
import random
import matplotlib.pyplot

for i in range(1000):
    x = random.uniform(-1.0, 1.0)
    y = x ** 2
    matplotlib.pyplot.plot(x, y, marker='.')
matplotlib.pyplot.show()
#コード03
import random
import matplotlib.pyplot as plt

for i in range(1000):
    x = random.uniform(-1.0, 1.0)
    y = x ** 2
    plt.plot(x, y, marker='.')
plt.show()

(1) 書式1:import ○○.△△.□□ as ◇◇

 importしたライブラリを実行するときに、「import ○○.△△.□□ as ◇◇」とすることにより、「○○.△△.□□ 」を、ユーザーが自分でつけた名称「◇◇」に置き換えて実行することができます。

(2) 書式2:from ○○.△△ import □□ as ◇◇

importしたライブラリを実行するときに、「from ○○.△△ import □□ as ◇◇」とすることにより、「□□」の名称をユーザーが自分でつけた名称「◇◇」に置き換えて実行することができます。もちろん、○○.△△の部分は省略できます。

(3) ユーザー定義名称の乱用

ユーザー定義名称は、importするモジュールなどに自由な名前をつけられるので便利ですが、乱用すると他の人が読みにくいコードになります。書籍などをみて、慣用的にasが使われているものだけに用いるようにしましょう。例えば、以下のライブラリは、慣例的にimportする書式が決まっています。練習のために、matplotlibの様々な使い方を比較してきましたが、「import matplotlib.pyplot as plt」とするのが一般的です。

例えば、以下のライブラリはそれぞれ、慣例的に読み替える名称が決まっています。

(a) matplotlib
グラフを描画するときなどに使うライブラリ
import matplotlib.pyplot as plt

(b) numpy
数値計算を効率的に行うためのライブラリ
import numpy as np

(c) tensorflow
Googleが開発した機械学習に用いるライブラリ
import tensorflow as tf

(d) pandas
データ解析を支援する機能を提供するライブラリ
import pandas as pd

5.まとめ

 import文を使うときは、まずは、サンプルプログラムを参考に記述することになりますが、その記述の、どの部分が「パッケージ」や「モジュール」で、どの部分が「関数やクラス」なのかを意識して使うようにしましょう。

(1)書式1と書式2の比較

 下表は、書式1「import ○○.△△.□□」、書式2「from ○○.△△ import □□」の違いをまとめたものです。以下のポイントをおさえておけば、importは、それほど難しいものではないと思います。

(2) 一般的なmatplotlibパッケージの書式

 この記事では、matplotlibを例に、様々な読み込み方を比べてみましたが、matplotlibパッケージの一般的な読み込み書式は「import matplotlib.pyplot as plt」です。コード03を参考にしてください。

6.例題

 以下、コード04の3行目にはimport文が入ります。3行目にimport文を記述して、プログラムを完成させてください。

#コード03
import random
【この行に入るimport文を答えてください】

for i in range(1000):
    x = random.uniform(-1.0, 1.0)
    y = x ** 2
    plt.plot(x, y, marker='.')
plt.show()
解答を表示する
#解答例
import matplotlib.pyplot as plt

「from matplotlib import pyplot as plt」という書き方も可能ですが、上記解答例の方が多いと思います。

私が実際に購入した教材のご紹介

以下、私が実際に購入したPythonの教材をまとめてみました。 Pythonを学習する上で、少しでもお役に立つことができればうれしいです。

Python♪私が購入したPythonの書籍のレビュー

UdemyのPythonの動画講座を書籍を買う感覚で購入してみた