前書き
Pythonプログラミング言語には、さまざまなbuilt-in functionsが付属しています。 これらの中には、以下を含むいくつかの一般的な機能があります。
-
式を出力する
print()
-
数値の絶対値を返す
abs()
-
別のデータ型を整数に変換する
int()
-
シーケンスまたはコレクションの長さを返す
len()
ただし、これらの組み込み関数は制限されており、モジュールを使用してより高度なプログラムを作成できます。
Modulesは、Pythonコードで構成されるPython.py
ファイルです。 任意のPythonファイルをモジュールとして参照できます。 hello.py
と呼ばれるPythonファイルのモジュール名はhello
で、他のPythonファイルにインポートしたり、Pythonコマンドラインインタープリターで使用したりできます。 How To Write Modules in Python 3を読むことで、独自のモジュールの作成について学ぶことができます。
モジュールは、他のPython.py
ファイルまたはPythonコマンドラインインタープリターを介して参照できるdefine functions、classes、およびvariablesを使用できます。
Pythonでは、モジュールにはimport
ステートメントを使用してアクセスします。 これを行うとき、モジュールのコードを実行し、定義のスコープを維持して、現在のファイルがこれらを利用できるようにします。
たとえば、Pythonがhello
というモジュールをインポートすると、インタプリタは最初にhello
という組み込みモジュールを検索します。 組み込みモジュールが見つからない場合、Pythonインタープリターは、sys.path
変数から受け取るディレクトリのリストでhello.py
という名前のファイルを検索します。
このチュートリアルでは、モジュールの確認とインストール、モジュールのインポート、モジュールのエイリアス化について説明します。
モジュールの確認とインストール
Python Standard Libraryに組み込まれているモジュールは多数あり、システム機能へのアクセスを提供したり、標準化されたソリューションを提供したりする多くのモジュールが含まれています。 Python標準ライブラリは、すべてのPythonインストールの一部です。
これらのPythonモジュールの準備ができていることを確認するには、local Python 3 programming environmentまたはserver-based programming environmentを入力し、次のようにコマンドラインでPythonインタープリターを起動します。
python
インタープリター内から、import
ステートメントを実行して、次のように、指定されたモジュールを呼び出す準備ができていることを確認できます。
import math
math
は組み込みモジュールであるため、インタプリタはフィードバックなしでタスクを完了し、プロンプトに戻る必要があります。 つまり、math
モジュールの使用を開始するために何もする必要はありません。
2Dプロットライブラリmatplotlib
のように、インストールしていない可能性のあるモジュールを使用してimport
ステートメントを実行してみましょう。
import matplotlib
matplotlib
がインストールされていない場合、次のようなエラーが表示されます。
OutputImportError: No module named 'matplotlib'
CTRL + D
を使用してPythonインタープリターを非アクティブ化してから、pip
を使用してmatplotlib
をインストールできます。
次に、pip
を使用してmatplotlib
モジュールをインストールできます。
pip install matplotlib
インストールすると、import matplotlib
を使用してPythonインタープリターにmatplotlib
をインポートでき、エラーなしで完了します。
モジュールのインポート
モジュール内の関数を利用するには、import
ステートメントを使用してモジュールをインポートする必要があります。
import
ステートメントは、モジュールの名前とともにimport
キーワードで構成されます。
Pythonファイルでは、これはコードの先頭、シェバン行または一般的なコメントの下で宣言されます。
したがって、Pythonプログラムファイルmy_rand_int.py
で、random
モジュールをインポートして、次の方法で乱数を生成します。
my_rand_int.py
import random
モジュールをインポートすると、現在のプログラムで別の名前空間として利用できるようになります。 これは、[module].[function]
のように、ドット表記で関数を参照する必要があることを意味します。
実際には、random
モジュールの例では、これは次のような関数のようになります。
-
ランダムな整数を返す関数を呼び出す
random.randint()
、または -
指定された範囲からランダムな要素を返す関数を呼び出す
random.randrange()
。
for
loopを作成して、my_rand_int.py
プログラム内でrandom
モジュールの関数を呼び出す方法を示しましょう。
my_rand_int.py
import random
for i in range(10):
print(random.randint(1, 25))
この小さなプログラムは、最初に最初の行のrandom
モジュールをインポートし、次に10個の要素で動作するfor
ループに移動します。 ループ内で、プログラムは1から25(両端を含む)の範囲内のランダムな整数を出力します。 整数1
および25
は、パラメーターとしてrandom.randint()
に渡されます。
python my_rand_int.py
を使用してプログラムを実行すると、出力として10個のランダムな整数を受け取ります。 これらはランダムであるため、プログラムを実行するたびに異なる整数が得られる可能性がありますが、次のようになります。
Output6
9
1
14
3
22
10
1
15
9
整数は1未満または25を超えてはなりません。
複数のモジュールの関数を使用する場合は、複数のimport
ステートメントを追加することで使用できます。
my_rand_int.py
import random
import math
import random, math
のように、コンマで区切られた複数のモジュールをインポートするプログラムが表示される場合がありますが、これはPEP 8 Style Guideと一致していません。
追加のモジュールを利用するために、math
から定数pi
をプログラムに追加し、出力されるランダムな整数の数を減らすことができます。
my_rand_int.py
import random
import math
for i in range(5):
print(random.randint(1, 25))
print(math.pi)
これで、プログラムを実行すると、次のような出力が表示されます。出力の最後の行はpiの近似値です。
Output18
10
7
13
10
3.141592653589793
import
ステートメントを使用すると、1つ以上のモジュールをPythonプログラムにインポートして、それらのモジュールで作成された定義を利用できます。
from
の使用…import
プログラムの名前空間内のモジュールからアイテムを参照するには、from
…import
ステートメントを使用できます。 この方法でモジュールをインポートすると、ドット表記ではなく名前で関数を参照できます
この構成では、直接参照する定義を指定できます。
他のプログラムでは、import
ステートメントが、ワイルドカードとしてアスタリスク(*
)を使用して、モジュール内で定義されたすべての参照を取り込む場合がありますが、これはPEP 8によって推奨されません。
まず、random
モジュールから1つの特定の関数randint()
をインポートする方法を見てみましょう。
my_rand_int.py
from random import randint
ここでは、最初にfrom
キーワードを呼び出し、次にモジュールに対してrandom
を呼び出します。 次に、import
キーワードを使用して、使用する特定の関数を呼び出します。
これで、この関数をプログラム内に実装すると、関数をドット表記でrandom.randint()
と書くのではなく、randint()
と書くだけになります。
my_rand_int.py
from random import randint
for i in range(10):
print(randint(1, 25))
プログラムを実行すると、以前に受け取ったものと同様の出力を受け取ります。
from
…import
構造を使用すると、プログラムの名前空間内のモジュールの定義済み要素を参照できるため、ドット表記を回避できます。
エイリアスモジュール
as
キーワードを使用して、Python内でモジュールの名前とその関数を変更することができます。
プログラム内の他の何かに同じ名前を既に使用しているため、名前を変更したい場合があります。インポートした別のモジュールもその名前を使用します。
このステートメントの構成は次のようになります。
import [module] as [another_name]
my_math.py
プログラムファイルのmath
モジュールの名前を変更してみましょう。 省略形にするために、math
のモジュール名をm
に変更します。 変更されたプログラムは次のようになります。
my_math.py
import math as m
print(m.pi)
print(m.e)
プログラム内では、pi
定数をmath.pi
ではなくm.pi
と呼びます。
一部のモジュールでは、エイリアスを使用するのが一般的です。 matplotlib.pyplot
module’s official documentationは、エイリアスとしてplt
を使用することを要求します。
import matplotlib.pyplot as plt
これにより、プログラマーは、plt.show()
のように、モジュール内で使用可能な任意の関数に短い単語plt
を追加できます。 このエイリアスインポートステートメントは、「https://www.digitalocean.com/community/tutorials/how-to-plot-data-in-python-3-using-matplotlib[Pythonでデータをプロットする方法」で使用されています。 3matplotlib
チュートリアルの使用]。」
結論
モジュールをインポートすると、Pythonに組み込まれていない関数を呼び出すことができます。 一部のモジュールはPythonの一部としてインストールされ、一部はpip
を介してインストールされます。
モジュールを使用すると、既存のコードを活用するので、プログラムをより堅牢で強力にすることができます。 また、自分自身や他のプログラマーが将来のプログラムで使用するためにcreate our own modulesを使用することもできます。