Pythonのモジュールの使い方。パッケージやライブラリとの違いも解説

Python

「Pythonのプログラムにも少し慣れたし、もっと実用的なシステムが作れるようになりたい」

本記事では、そんなあなたにモジュールの機能・使い方を丁寧に解説します。

Pythonにおいて、モジュールは「関数やクラスを集めたファイル」と定義されます。

本格的にプログラムを構築するためには欠かせない存在で、多彩な処理が簡単に実現できるようになるのが大きな魅力です。

それではモジュールの基礎を理解していきましょう。

Pythonの「モジュール」の基本情報・使うメリット

まず初めに、モジュールについての基本的な情報を整理しておきます。

モジュールは拡張子「.py」のPythonファイル

モジュールの定義として、拡張子は「.py」のpythonファイルになります。
ある目的に特化した関数やクラスをまとめて構成されたファイルです。
その集合体から、使いたい機能を呼び出すようなイメージになります。

モジュールという言葉は、日本語に訳すと「部品」という意味です。
そして実際のプログラムにおいても、部品のような役割を持っています。

モジュールは他のプログラムから呼び出すことができる

モジュールのメリットは、他のプログラムからコードを呼び出せることです。
.pyファイルに保存しておくことで、他のプログラムからでもコードを再利用できます。
モジュールなら、クラスのようにインスタンスを作る必要もありません。

モジュールを使うとプログラムの管理が楽になる

モジュールに格納して整理することは、プログラムの管理を簡単にしています。

プログラムの実行でエラーが出た場合、エラーの原因を探す必要があります。
1つのファイルで管理していると、膨大なコードからエラー部分を探すのは非常に大変です。

モジュールを使うことで、複数のファイルに分けてシステムを構成すると、
エラーの原因となった範囲を絞りやすく、コードの管理が簡単になるのです。

「パッケージ」や「ライブラリ」との違いについて

モジュールに似たものとして「パッケージ」や「ライブラリ」と呼ばれるファイルがあります。
ここでは、モジュールとパッケージ、ライブラリの違いについて触れておきます。

モジュールを集めたフォルダが「パッケージ」

パッケージは「モジュールを集めたモジュール群」のことです。

パッケージとモジュールと関数、クラスを大小で比較すると、

[パッケージ] > [モジュール] > [関数・クラス]

というような階層構造になっているイメージです。

上に書いたように、モジュールは似た機能の関数やクラスをまとめたファイルです。
そのモジュールをさらに集めてフォルダにまとめることで、パッケージを作ることができます。
パッケージにまとめることで、複数のモジュールを階層化して整理できるようになります。

フォルダをパッケージにするためには、フォルダ内に「__init__.py」というファイルを置く必要があります。

「__init__.py」にはパッケージの初期化処理について記述されています。

モジュールもパッケージも「ライブラリ」

「ライブラリ」という言葉のPythonにおける意味は、正直に言うと曖昧です。
モジュールのことを指す場合もあれば、パッケージのことを指す場合もあり、
さらにはモジュールとパッケージの両方を指す場合もあります。

「プログラム開発の際に頻繁に使う処理を簡単に呼び出せるようまとめたソフトウェア」
といったイメージで理解しておけば問題ありません。

モジュールを「import」する手順

モジュールを使うには「import」という作業が必要です。
importとは、プログラムで使いたいモジュールを予め準備しておく作業になります。
Pythonの組み込み関数ではない関数を使うには、モジュールからimportする必要があるのです。

importしたモジュールの中から関数を呼び出すことで、
ようやくプログラム内でその関数が使えるようになるのです。

ここからは、モジュールをimportする手順について見ていきます。

プログラムにモジュールをimportする

まずはじめにモジュール全体をプログラムにimportしましょう。
書式はシンプルで、プログラムの冒頭で以下のように記述するだけです。

【テンプレート】

import モジュール名

例として、randomモジュールをimportしてみましょう。
randomモジュールの場合は「random」の部分がモジュール名にあたります。

【コード例】

import random

たったこれだけで、モジュールはしっかりとプログラムにimportされています。

モジュールから関数を呼び出す

つづいてはimportしたモジュール内にある関数を呼び出してみます。
プログラム内の関数を使いたい箇所で、以下のように記述しましょう。

【テンプレート】

モジュール名.関数名()

関数で引数を使う場合は、()の中に入力します。

以下の例では、「randomモジュール」に格納されている「random関数」を呼び出します。
random関数の機能は、0以上1未満の乱数を戻すことです。
引数は必要ありません。

【コード例】

import random

print(random.random())

【出力結果】

0.22739427735207152

【コード例】

import random

print(random.random())

【出力結果】

0.8217255880277837

このように、出力の度に違う値が表示されているので成功です。

同じモジュールにある他の関数も使用できる

1度importしたモジュールであれば、どの関数でも呼び出すことができます。

「randomモジュール」に格納された「choice関数」を呼び出してみましょう。
choice関数の機能は、文字列やリストなどの引数を与えることで、その中からランダムに要素を選択するというものです。

青・赤・緑の3色から自動で色を選んでくれるシステムを作りましょう。
「color」というシーケンスを作り、要素として3色を入れます。
choice関数の引数としてcolorを入力すれば、出力の度にランダムな色が表示されます。

【コード例】

import random

color = ['blue', 'red', 'green']
print(random.choice(color))

【出力結果】

red

【コード例】

import random

color = ['blue', 'red','green' ]
print(random.choice(color))

【出力結果】

‘green’

同じコードで違う色が出力されているので、正常に作動していることが分かります。

モジュールを効率よくimportする方法

モジュール名の文字数が多い場合、使う度に何度も記述するのは面倒です。
そこでより効率的にするため、記述する文字数を減らすことのできる2つの方法があります。

「別名でimportする方法」と「特定の機能だけをimportする方法」を見ていきましょう。

モジュール名を「別名」に変えてimportする

モジュール名の文字数を短くするために、別名をつけるという方法です。

【テンプレート】

import モジュール名 as 別名

別名でimportすれば、プログラム内ではその別名をモジュール名として使えるようになります。
別名の部分は基本的に自由に記述することができますので、1文字でも大丈夫です。

次の例では、モジュール名randomを別名「rd」にしてimportしてみます。

【コード例】

import random as rd

color = ['blue', 'red','green'] 
print(rd.choice(color))

【出力結果】

green

このように、rdという2文字でもchoice関数の値が正常に出力されました。

モジュールから「関数だけ」をimportする

モジュール名の記述を省略し、機能名だけで実行させることもできます。

【テンプレート】

from モジュール名 import 機能名

import文に「from節」を付け、モジュール内の機能だけをimportします。
これでモジュールを介さずに、その機能を直接使えるようになります。

importしたモジュールから関数を呼び出す場合、
「モジュール名.関数名()」のように、モジュール名まで書く必要があります。

しかし、指定した機能だけをimportすることで、
いちいちモジュール名を指定する必要がなくなります。

次の例では、先ほど使ったchoice関数だけをimportしてみます。

【コード例】

from random import choice

color = ['blue', 'red','green'] 
print(choice(color))

【出力結果】

red

関数を呼び出す際の「random.」をまるごと省略しても、しっかり動作しています。

「関数だけ」を「別名」にすることも可能

importした機能に対して、さらに別名を付けることもできます。

【テンプレート】

from モジュール名 import 機能名 as 別名

これを使えば、機能名の記述まで省略して、最大限に短くすることができます。

次の例では、importしたchoice関数に「ch」という別名を付けて呼び出せるようにしています。

【コード例】

from random import choice as ch

color = ['blue', 'red','green'] 
print(ch(color))

【出力結果】

blue

ここまで省略しても、略さずに実行した場合と同じように問題なく作動しています。

まとめ

モジュールを利用することで、システムの利便性は大幅にアップデートされます。

プログラムが高度になるのはもちろん、ファイルで管理することにより、その複雑さに耐える扱いやすさも持ち合わせているのです。

プロのエンジニアも、人工知能やWebアプリの開発でモジュールを頻繁に利用しています。
モジュールを扱えるようになれば、もはや初学者とは呼ばれません。

マスターするには少し時間がかかりますが、そのコストをはるかに上回るほど学ぶ価値がある機能です。

コメント

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