Python3でモジュールをインポートする方法
序章
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インタープリターを起動します。
- 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
モジュールをインポートして、次の方法で乱数を生成します。
import random
モジュールをインポートすると、現在のプログラムで別の名前空間として使用できるようになります。 これは、[module].[function]
のように、ドット表記で関数を参照する必要があることを意味します。
実際には、random
モジュールの例では、これは次のような関数のように見える場合があります。
- ランダムな整数を返す関数を呼び出す
random.randint()
、または random.randrange()
は、指定された範囲からランダムな要素を返す関数を呼び出します。
forループを作成して、my_rand_int.py
プログラム内でrandom
モジュールの関数を呼び出す方法を示しましょう。
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個のランダムな整数を受け取ります。 これらはランダムであるため、プログラムを実行するたびに異なる整数を取得する可能性がありますが、次のようなものが生成されます。
Output6
9
1
14
3
22
10
1
15
9
整数が1を下回ったり25を上回ったりすることはありません。
複数のモジュールの関数を使用する場合は、複数のimport
ステートメントを追加することで使用できます。
import random
import math
import random, math
のように、複数のモジュールをカンマで区切ってインポートするプログラムが表示される場合がありますが、これはPEP8スタイルガイドと一致していません。
追加のモジュールを利用するために、math
から定数pi
をプログラムに追加し、出力されるランダムな整数の数を減らすことができます。
import random
import math
for i in range(5):
print(random.randint(1, 25))
print(math.pi)
これで、プログラムを実行すると、次のような出力が返されます。出力の最後の行は、円周率の近似値です。
Output18
10
7
13
10
3.141592653589793
import
ステートメントを使用すると、1つ以上のモジュールをPythonプログラムにインポートして、それらのモジュールで作成された定義を利用できます。
from
を使用…import
プログラムの名前空間内のモジュールからアイテムを参照するには、from
…import
ステートメントを使用できます。 この方法でモジュールをインポートすると、ドット表記ではなく名前で関数を参照できます。
この構成では、直接参照する定義を指定できます。
他のプログラムでは、import
ステートメントが、ワイルドカードとしてアスタリスク(*
)を使用してモジュール内で定義されたすべての参照を取り込むことがありますが、これはPEP8では推奨されません。 。
最初に、random
モジュールからrandint()
という特定の関数をインポートする方法を確認しましょう。
from random import randint
ここでは、最初にfrom
キーワードを呼び出し、次にモジュールに対してrandom
を呼び出します。 次に、import
キーワードを使用して、使用する特定の関数を呼び出します。
これで、この関数をプログラム内に実装すると、関数をドット表記でrandom.randint()
と書くのではなく、randint()
とだけ書くようになります。
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
に変更します。 変更したプログラムは次のようになります。
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
を介してインストールされます。
モジュールを利用することで、既存のコードを活用することで、プログラムをより堅牢で強力なものにすることができます。 また、独自のモジュールを作成して、自分自身や他のプログラマーが将来のプログラムで使用できるようにすることもできます。