序章

Pythonプログラミング言語には、さまざまな組み込み関数が付属しています。 これらの中には、次のようないくつかの一般的な機能があります。

  • 式を出力するprint()
  • 数値の絶対値を返すabs()
  • 別のデータ型を整数に変換するint()
  • len()これはシーケンスまたはコレクションの長さを返します

ただし、これらの組み込み関数には制限があり、モジュールを使用してより高度なプログラムを作成できます。

Modules は、Pythonコードで構成されるPython.pyファイルです。 すべてのPythonファイルをモジュールとして参照できます。 hello.pyというPythonファイルのモジュール名はhelloで、他のPythonファイルにインポートしたり、Pythonコマンドラインインタープリターで使用したりできます。 Python 3でモジュールを作成する方法を読むと、独自のモジュールの作成について学ぶことができます。

モジュールは、他のPython .pyファイルまたはPythonコマンドラインインタープリターを介して参照できる関数クラス、および変数を定義できます。

Pythonでは、モジュールにはimportステートメントを使用してアクセスします。 これを行うときは、現在のファイルがこれらを利用できるように、定義のスコープを維持しながら、モジュールのコードを実行します。

たとえば、Pythonがhelloというモジュールをインポートすると、インタプリタは最初にhelloという組み込みモジュールを検索します。 組み込みモジュールが見つからない場合、Pythonインタープリターは、sys.path変数から受け取るディレクトリのリストでhello.pyという名前のファイルを検索します。

このチュートリアルでは、モジュールの確認とインストール、モジュールのインポート、およびモジュールのエイリアシングについて説明します。

前提条件

Python 3をインストールし、コンピューターまたはサーバーにプログラミング環境をセットアップする必要があります。 プログラミング環境をセットアップしていない場合は、ローカルプログラミング環境またはサーバー上のプログラミング環境のインストールおよびセットアップガイドを参照して、オペレーティングに適したものにすることができます。システム(Ubuntu、CentOS、Debianなど)

モジュールの確認とインストール

Python標準ライブラリに組み込まれているモジュールがいくつかあります。このライブラリには、システム機能へのアクセスを提供したり、標準化されたソリューションを提供したりする多くのモジュールが含まれています。 Python標準ライブラリは、すべてのPythonインストールの一部です。

情報:このチュートリアルのサンプルコードに従うには、python3コマンドを実行して、ローカルシステムでPythonインタラクティブシェルを開きます。 次に、>>>プロンプトの後に例を追加して、例をコピー、貼り付け、または編集できます。

これらのPythonモジュールの準備ができていることを確認するには、ローカルのPython 3プログラミング環境またはサーバーベースのプログラミング環境に入り、コマンドラインで次のようにPythonインタープリターを起動します。

  1. python

インタプリタ内から、importステートメントを実行して、次のように、指定されたモジュールを呼び出す準備ができていることを確認できます。

  1. import math

mathは組み込みモジュールであるため、インタプリタはフィードバックなしでタスクを完了し、プロンプトに戻る必要があります。 これは、mathモジュールの使用を開始するために何もする必要がないことを意味します。

2Dプロットライブラリmatplotlibのように、インストールしていない可能性のあるモジュールを使用してimportステートメントを実行してみましょう。

  1. import matplotlib

matplotlibがインストールされていない場合、次のようなエラーが発生します。

Output
ImportError: No module named 'matplotlib'

CTRL + Dを使用してPythonインタープリターを非アクティブ化してから、pipを使用してmatplotlibをインストールできます。

次に、pipを使用して、matplotlibモジュールをインストールできます。

  1. 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ループを作成して、my_rand_int.pyプログラム内でrandomモジュールの関数を呼び出す方法を示しましょう。

my_rand_int.py
import random


for i in range(10):
    print(random.randint(1, 25))

この小さなプログラムは、最初にrandomモジュールを最初の行にインポートし、次にforループに移動します。このループは10個の要素で動作します。 ループ内で、プログラムは1から25(両端を含む)の範囲内のランダムな整数を出力します。 整数1および25は、パラメーターとしてrandom.randint()に渡されます。

python my_rand_int.pyを使用してプログラムを実行すると、出力として10個のランダムな整数を受け取ります。 これらはランダムであるため、プログラムを実行するたびに異なる整数を取得する可能性がありますが、次のようなものが生成されます。

Output
6 9 1 14 3 22 10 1 15 9

整数が1を下回ったり25を上回ったりすることはありません。

複数のモジュールの関数を使用する場合は、複数のimportステートメントを追加することで使用できます。

my_rand_int.py
import random
import math

import random, mathのように、複数のモジュールをカンマで区切ってインポートするプログラムが表示される場合がありますが、これはPEP8スタイルガイドと一致していません。

追加のモジュールを利用するために、mathから定数piをプログラムに追加し、出力されるランダムな整数の数を減らすことができます。

my_rand_int.py
import random
import math


for i in range(5):
    print(random.randint(1, 25))

print(math.pi)

これで、プログラムを実行すると、次のような出力が返されます。出力の最後の行は、円周率の近似値です。

Output
18 10 7 13 10 3.141592653589793

importステートメントを使用すると、1つ以上のモジュールをPythonプログラムにインポートして、それらのモジュールで作成された定義を利用できます。

fromを使用…import

プログラムの名前空間内のモジュールからアイテムを参照するには、fromimportステートメントを使用できます。 この方法でモジュールをインポートすると、ドット表記ではなく名前で関数を参照できます。

この構成では、直接参照する定義を指定できます。

他のプログラムでは、importステートメントが、ワイルドカードとしてアスタリスク(*)を使用してモジュール内で定義されたすべての参照を取り込むことがありますが、これはPEP8では推奨されません。

最初に、randomモジュールから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))

プログラムを実行すると、以前に受け取ったものと同様の出力が届きます。

fromimport構造を使用すると、プログラムの名前空間内のモジュールの定義済み要素を参照できるため、ドット表記を回避できます。

エイリアシングモジュール

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モジュールの公式ドキュメントでは、エイリアスとしてpltを使用する必要があります。

import matplotlib.pyplot as plt

これにより、プログラマーは、plt.show()のように、モジュール内で使用可能な任意の関数に短い単語pltを追加できます。 このエイリアスインポートステートメントは、「matplotlibチュートリアルを使用してPython3でデータをプロットする方法」で使用されていることがわかります。

結論

モジュールをインポートすると、Pythonに組み込まれていない関数を呼び出すことができます。 一部のモジュールはPythonの一部としてインストールされ、一部はpipを介してインストールされます。

モジュールを利用することで、既存のコードを活用することで、プログラムをより堅牢で強力なものにすることができます。 また、独自のモジュールを作成して、自分自身や他のプログラマーが将来のプログラムで使用できるようにすることもできます。