Pythonの「import」は、Pythonの様々なモジュールやパッケージを扱っていくうえで、必ず使用する基本動作の一つです。Pythonのプログラミングを始めたばかりの方にとって、importは何気なく使用している側面もあるかもしれません。しかし、Pythonのプログラミングにおいてimportはかなり重要な役割を担っています。
今回はPythonのプログラミング初心者の方でもわかりやすいように、実際の具体的なコード例を交えながらimportについて解説していきます。
Pythonのimportとは
Pythonのimportは外部モジュールやパッケージをプログラムに取り込むためのキーワードで、一番最初のソースファイルの先頭に記述することが多くなります。わかりやすい表現をすると、importはモジュールやパッケージを使用するための「合言葉」みたいなものです。importによって呼び出されたモジュールやパッケージを使用して、様々なプログラミングを実施することが可能になります。
以下に標準モジュールである「randomモジュール」を呼び出す例を示します。
import random
また、importするモジュールはわかりやすく別名を付けることも可能です。
import random as rd
Pythonでimportされるモジュールやパッケージとは
Pythonのimportによってモジュールやパッケージなどを使用できることはわかりましたが、そもそも、それらが何者であるかについても解説します。
モジュールとは
「モジュール」は、Pythonプログラムを実施する際の便利な部品であり、クラスや関数などをまとめた単一のプログラムファイルになります。Pythonの標準ライブラリには、さまざまな便利なモジュールが含まれており、さらに標準ライブラリには含まれていないサードパーティ製モジュールも無料で使用できます。
代表的な標準モジュールの例
random | 乱数を生成するためのモジュール |
datetime | 日付と時刻を操作するためのモジュール |
string | 一般的な文字列操作を行うモジュール |
math | 数学関数の機能をが扱えるモジュール |
os | ファイルシステムを操作するためのモジュール |
csv | CSVファイルの読み書きを行うためのモジュール |
代表的なサードパーティ製モジュールの例
NumPy | 数値・ベクトル計算を行うモジュール |
Pandas | データ解析やデータ操作に特化したモジュール |
Matplotlib | グラフ描画など、データの可視化に利用できるモジュール |
Scikit-learn | 機械学習アルゴリズムやツールを提供するモジュール |
TensorFlow | ニューラルネットワークの構築した深層学習のためのモジュール |
PyTorch | GPUを利用した深層学習のためのモジュール |
Pythonの標準ライブラリに含まれる代表的なモジュールの一部や、よく知られている外部モジュールを紹介しましたが、実際にはさらに多くのモジュールがあります。世界中の様々な企業や個人がモジュールの開発・利用を行っており、これを利用することで効率的かつ便利にプログラミングを行うことができるでしょう。
パッケージとは
Pythonの「パッケージ」とは、複数のモジュールをまとめたディレクトリのことを指します。わかりやすく言うと様々な部品が収納されてある大きな箱みたいなものです。例えば、パソコンで複数のファイルを一つのフォルダにまとめて収納することはよくあると思いますが、単一のファイルがモジュールでフォルダがパッケージに相当すると考えてよいでしょう。
パッケージは、モジュールを階層的に管理し、コードの再利用性と保守性を向上させるための便利な方法です。Webアプリケーションの開発においては、データベース・ユーザー認証・ルーティングなどの機能を含む複数のモジュールを、1つのパッケージにまとめて使用しています。
ライブラリとは
「ライブラリ」は、関連するモジュールやパッケージが複数集まったものであり、一般的には外部パッケージや標準ライブラリを指しています。しかし、厳密なライブラリの定義は定まっておらず、特定の目的や用途に沿ったモジュールやパッケージが、機能セットとして提供されていると認識するとよいでしょう。
Pythonの基礎的なimportの使い方
ここからは、実際にPythonの具体的なコードを使用しながら、基礎的なimportの使い方について紹介します。Pythonを開いて実際に扱ってみるのが、プログラミングを効率的に学ぶうえで何より重要です。
モジュールのimport
まずはモジュールのimportを行ってみましょう。Pythonではimportの後に、使いたいモジュールを記載することで、簡単に目的とするモジュールを使用できるようになります。以下の例では標準モジュールであるmathをimportしてみました。
# mathモジュールをimportして、円周率を表示するimport mathprint(math.pi)
実行結果:3.141592653589793
ちなみにmathモジュールのpiは、円周率の値を表す定数で、円周率の近似値を表すことができます。
モジュールに別名をつけてimport
モジュール名が長い場合やよりシンプルにコード作成したい時は、モジュールに別名をつけることもできます。以下の例ではrandomモジュールの名前を省略してimportしてみました。
# randomモジュールを"r"という別名でimportし、1-10の範囲のランダムな整数を生成import random as rrandom_number = r.randint(1, 10)print(random_number)
実行結果:9
randint関数は、ランダムな整数を生成する関数で、randint(a, b)は、aからbまでの範囲からランダムに整数を選択します。
特定の関数やクラスのみをimport
モジュール内の特定の関数やクラスのみをimportすることも可能です。必要な部分のみを効率的に使用する場合は、importに加えてfromを使用すると良いでしょう。
# randomモジュールからrandint関数を直接インポートし、ランダムな整数を生成from random import randintrandom_number = randint(1, 20)print(random_number)
実行結果:15
複数のモジュールをimport
複数のモジュールをimportしたい場合は、以下のように一つずつimportをすることが推奨されています。以下の例ではmathとrandomモジュールを同時にimportしてみました。
# mathモジュールとrandomモジュールをimportするimport mathimport random# mathモジュールからpiを取得し、randomモジュールから1から10までの範囲のランダムな整数を取得pi_value = math.pirandom_number = random.randint(1, 10)print(pi_value)
実行結果:3.141592653589793
print(random_number)
実行結果:5
上記の例では、2つのモジュールのimportを行った後、math.piで円周率の値を算出し、random.randint(1, 10)で1から10までの範囲からランダムな整数を取得しています。また、以下のようにそれぞれのモジュールをカンマで区切って、一度に複数のモジュールをimportすることもできます。
import math, random
パッケージの作成とimport
Pythonのパッケージは、上記でもあるように複数のモジュールをまとめたものになり、ディレクトリ構造を持ちます。パッケージを作成するには以下の手順に従います。
- パッケージ用のディレクトリを作成する。
- パッケージ用のディレクトリ内に、モジュールファイル(.pyファイル)を配置する。
- パッケージ用のディレクトリ内に、_init_.pyファイルを配置する。このファイルは、Pythonにとってパッケージを示す特別なファイルになり、このファイルがない場合、Pythonはディレクトリをパッケージとして認識しない。
具体例として以下のようなディレクトリ構造を持つパッケージを作成してみます。
my_package/__init__.pymodule1.pymodule2.py
パッケージをインポートする方法としては、状況に応じて様々なパターンがあります。
- パッケージ全体をインポート: import my_package
- モジュール全体をインポート: import my_package.module1,module2
- パッケージ内の特定のモジュールをimportする: from my_package import module1
- パッケージ内の特定のモジュールから特定の関数やクラスをimportする: from my_package.module1 import some_function
Pythonのimportを扱う上で大切なこと
Pythonのimportを行う役割について、なんとなくは把握できたかと思います。最後にimportを扱う上で大切にしてほしいことを、実際の操作例を交えながらご紹介します。
明示的にimportをする
Pythonで使用するモジュールや関数を明確に指定して、importするようにしましょう。コードの可読性を高めるために必要なモジュールや関数のみをimportし、不要なものを含めないようにすることが大切です。
# モジュールの明示的なimportimport module_name# 特定の関数やクラスのみを明示的にimportfrom module_name import function_name, class_name# 別名をつけて明示的にimportimport module_name as ‘別名’
またimportは、名前空間を管理するための重要なツールです。モジュール名や別名を適切に選ぶことで、名前の衝突によるエラーを回避することができるでしょう。
効率的なimport
大規模なプロジェクトやデータ解析等を実践する際、importの効率を考慮する必要があります。必要部分のみimportし、不要なモジュールやライブラリ等はimportしないようにすることで、起動時間やメモリ使用量を削減できます。
サードパーティ製モジュールの管理
外部のサードパーティ製モジュールを利用する場合、適切なバージョン管理や依存関係の解決が重要です。外部モジュールをimportする際、古いバージョンであったり、依存関係に問題があるとエラーが発生してしまうかもしれません。
Pythonの標準ライブラリの活用
Pythonには豊富な標準モジュールが含まれており、上記で示したもの以外にも多くの一般的なタスクをサポートしてくれます。標準ライブラリを効果的に活用することで、手間を省き、高品質なコードを書くことができるでしょう。
どのようなエラーが存在するか把握しておく
Pythonでimportを実行する際、主なエラーとしては「ModuleNotFoundError」と「AttributeError」が挙げられます。ModuleNotFoundErrorは、Python 3.6以降で新しく導入されたエラーになり、指定されたモジュールが見つからない場合などで発生します。よくあるケースとしては、モジュール名のスペルを間違えている場合があります。
以下の例ではrandomモジュールをインポートする際、わざとスペルを間違えたものになります。
import rendom
実行結果:
ModuleNotFoundErrorCell In[1], line 1----> 1 import rendomModuleNotFoundError: No module named 'rendom'
また、AttributeErrorは、インポートしたモジュールやオブジェクトに指定された属性が存在しない場合に発生します。ファイル名とモジュール名が同一になっている場合や、属性名のスペルミスなどがあると、AttributeErrorが発生します。
Pythonの配列についてまとめ
今回はPythonのimportに関して、基本的なことを中心に、具体的な操作方法を交えながら紹介してみました。Pythonのimportはプログラミングにおいて重要な機能の1つであり、他のモジュールやパッケージの機能を自分のコードに取り込む上で、欠かすことができません。
importの正しい使い方をマスターすることによって、効率的かつ可読性の高いコードを作成できるようになるでしょう。