Python 3でモジュールをインポートする方法

前書き

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 functionsclasses、および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

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

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

他のプログラムでは、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))

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

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 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を使用することもできます。