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

紹介

Pythonプログラミング言語にはさまざまな組み込み関数が付属しています。その中にはいくつかの一般的な関数が含まれています:

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

しかしながら、これらの組み込み関数は限られており、より洗練されたプログラムを作成するためにモジュールを利用することができます。

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

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

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

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

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

前提条件

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

ローカルプログラミング環境またはサーバー上のプログラミング環境を設定するためのインストールおよびセットアップガイドについては、適切なオペレーティングシステム(Ubuntu、CentOS、Debianなど)に関する情報を参照してください。

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

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

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

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

  1. python

インタープリター内で、importステートメントを実行して、指定されたモジュールが呼び出し可能であることを確認できます。

  1. import math

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

matplotlibのようにインストールされていないモジュールでimportステートメントを実行しましょう:

  1. import matplotlib

matplotlibがインストールされていない場合、次のようなエラーが表示されます:

Output
ImportError: No module named 'matplotlib'

CTRL + DでPythonインタープリターを無効にし、次にpipを使用してmatplotlibをインストールします。

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

  1. pip install matplotlib

インストールされると、Pythonインタープリターでimport matplotlibを使用してmatplotlibをインポートし、エラーなしで完了します。

モジュールのインポート

モジュールの関数を使用するには、importステートメントを使用してモジュールをインポートする必要があります。

import文は、importキーワードとモジュール名で構成されています。

Pythonファイルでは、これはコードの先頭に宣言され、シェバン行や一般的なコメントの下に配置されます。

したがって、Pythonプログラムファイルmy_rand_int.pyでは、この方法でrandomモジュールをインポートします:

my_rand_int.py
import random

モジュールをインポートすると、現在のプログラム内で別個の名前空間として利用可能になります。これは、ドット表記で関数を参照する必要があることを意味します。

実際には、randomモジュールの例では、次のような関数があります:

  • random.randint()はランダムな整数を返す関数を呼び出し、または
  • random.randrange()は指定された範囲からランダムな要素を返す関数を呼び出します。

次に、my_rand_int.pyプログラム内でrandomモジュールの関数をどのように呼び出すかを示すforループを作成しましょう:

my_rand_int.py
import random


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

この小さなプログラムは、最初の行でrandomモジュールをインポートし、次に10個の要素で動作するforループに移動します。ループ内では、プログラムは範囲1から25(含む)内のランダムな整数を表示します。整数125random.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

コンマで区切られた複数のモジュールをインポートするプログラムも見ることができますが、これはPEP 8スタイルガイドと一貫していません。

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

my_rand_int.py
import random
import math


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

print(math.pi)

これで、プログラムを実行すると、次のような出力が得られます。最後の行の出力はpiの近似値です:

Output
18 10 7 13 10 3.141592653589793

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

fromimportを使用する

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

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

他のプログラムでは、モジュール内で定義されたすべてのものへの参照として、ワイルドカードとしてアスタリスク(*)を使用するimportステートメントを見ることがありますが、これはPEP 8によって非推奨です。

まず、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構文を使用することで、プログラムの名前空間内でモジュールの定義された要素を参照できるようになり、ドット記法を避けることができます。

モジュールのエイリアス

Pythonのモジュール名とその関数の名前をasキーワードを使って変更することが可能です。

プログラム内で同じ名前を既に別のものに使用している場合、別のインポートしたモジュールがその名前を使用している場合、または頻繁に使用している長い名前を略したい場合など、名前を変更したい場合があります。

この文の構造は以下のようになります:

import [module] as [another_name]

my_math.pyプログラムファイル内のmathモジュールの名前を変更してみましょう。モジュール名をmに略します。変更後のプログラムは以下のようになります:

my_math.py
import math as m


print(m.pi)
print(m.e)

プログラム内では、今後math.piではなくm.piとしてpi定数を参照します。

一部のモジュールでは、エイリアスを使用するのが一般的です。たとえば、matplotlib.pyplotモジュールの公式ドキュメントでは、pltをエイリアスとして使用するように指定されています:

import matplotlib.pyplot as plt

これにより、プログラマーはモジュール内で利用可能な関数のどれにでも短い単語pltを追加することができます。たとえば、plt.show()のようになります。このエイリアスのインポート文は、私たちの「Python 3でデータをプロットする方法 – matplotlibチュートリアル」内で使用されています。

結論

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

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3