・macOS Big Sur
・Python3.8
モジュール
関数やクラス等の機能をまとめたスクリプトファイルを「モジュール」と言います。「モジュール名.py」として保存することで作成できます。形上は通常のスクリプトファイルと変わりません。
モジュール名のルール。
- 数字からは始めない。
- アルファベットの小文字のみを使用する。
- ドットは含めない。
モジュールは必要なときに読み込む(インポートする)ことで、適宜使用することができます。以下のようにfunc1関数とfunc2関数を定義したmodule1モジュールを例にインポート方法を説明します。
# ファイル名:module1.py
def func1(a, b):
return a + b
def func2(c, d):
return c * d
モジュールのインポート
「import文」を使用することで、モジュールを読み込むことができます。
また、「モジュール名.関数名()」でモジュール内の関数を呼び出すことができます。(クラスを呼び出す場合も同様です。なお、モジュール内で変数が定義されている場合、読み込み後に「モジュール名.変数名」で読み書きすることもできます。)
import モジュール名
モジュール名.関数名()
import module1
print(module1.func1(1, 2))
print(module1.func2(3, 4))
# 実行結果
3
12
仮に、module1モジュール内で「func3関数を持つmodule2モジュール」をインポートしている場合、「module1.module2.func3()」と記述することで、モジュール内でインポートしている別のモジュールの関数を呼び出すこともできます。
なお、インポートすると、スクリプトファイルは実行もされます。例えば、print('Hello')の単純文があれば「Hello」と出力されます。
インポートの際には実行せず、直接ファイルを実行した場合にのみ実行させたい命令は、以下のようなif文のブロックに記述します。
# ファイル名:module1.py
if __name__ == '__main__':
print('Hello')
def func1(a, b):
return a + b
def func2(c, d):
return c * d
# インポート時には実行されません。
import module1
# 直接ファイルを実行するとprint()関数が実行されます。
% python3 module1.py
Hello
「__name__」は「特殊変数」と言い、プログラム実行時に自動的に定義される変数です。モジュールがインポートされた場合、「__name__」には「モジュール名」が代入され、直接実行された場合は文字列「__main__」が代入されます。
モジュールの名称を変更してインポート
「as」を使用することで、モジュール名を変更してインポートすることができます。関数を呼び出す際も、変更後のモジュール名を使用して呼び出します。
import モジュール名 as 変更後の名称
変更後の名称.関数名()
# module1をmodとして読み込む。
import module1 as mod
print(mod.func1(1, 2))
print(mod.func2(3, 4))
# 実行結果
3
12
モジュール内の特定の関数等のみをインポート
「from」を使用することで、モジュール内の特定の関数等のみをインポートすることができます。
from モジュール名 import 関数名等
※asを使用して関数名等を変更してインポートすることもできます。
ドットによる関数のインポートはできません。import module1.func1はエラーになります。
import単体ではモジュールしかインポートできません。なお、モジュール内のモジュールをインポートする場合は、ドットを使用することができます。(例:import module1.module2)
# module1のfunc1関数のみインポート。
from module1 import func1
print(func1(1, 2))
# 実行結果
3
パッケージ
複数のモジュールをまとめて「パッケージ」として管理することができます。パッケージの実態はディレクトリですが、ディレクトリ内に「__init__.py」モジュールを作成する必要があります。
「__init__.py」モジュールは空の状態でも大丈夫ですが、パッケージをインポートした際には、「__init__.py」モジュールが実行されるため、初期化プログラムを書いておくことも可能です。
パッケージのインポート
パッケージをインポートする際は、モジュールまで指定する必要があります。
通常のモジュールのインポートと同様に、importでドットを使用してモジュールまで指定、fromと組み合わせることで特定のモジュールや関数等の呼び出し、asを使用することでモジュールや関数等を別名で読み込むことができます。
# インポート。
import package.module1
# 関数の呼び出し。
package.module1.func1()
# fromを使用したインポート。
from package import module1
# 関数の呼び出し。
module1.func1()
# fromを使用したインポート。
from package.module1 import func1
# 関数の呼び出し。
func1()
# asを使用した別名でのインポート。
import package.module1 as mod
# 関数の呼び出し
mod.func1()
# asを使用した別名でのインポート。
from package import module1 as mod
# 関数の呼び出し。
mod.func1()
# asを使用した別名でのインポート。
from package.module1 import func1 as f
# 関数の呼び出し。
f()
標準ライブラリ
Pythonには、あらかじめ搭載されているパッケージやモジュールが多数あります。これらを「標準ライブラリ」といいます。(関数やモジュール、パッケージ等をまとめたものを「ライブラリ」といいます。)
外部ライブラリ、pipコマンド
標準ライブラリ以外に公開されてるサードパーティー製のライブラリ(「外部ライブラリ」)を利用することも可能です。
外部ライブラリは「PyPI」(サイトはこちら。)で公開されています。
PyPIに登録されている外部ライブラリをインストールするには、ターミナルに以下のように入力します。
% pip3 install <ライブラリ名>
# ライブラリ名の後ろに「==」と「<バージョン名>」を付けると、指定のバージョンのライブラリをインストールできる。
# (例)pip3 install requests==2.31.0
% pip3 install <ライブラリ名>==<バージョン名>
# 外部パッケージをアンインストールする。
% pip3 uninstall <ライブラリ名>
また、既にインストールしている外部ライブラリをアップデートするには、ターミナルに以下のように入力します。
% pip3 install --upgrade <ライブラリ名>
ライブラリの情報を出力・利用する場合は、以下のコマンドを使用します。
# ライブラリの情報を表示。
% pip3 show <ライブラリ名>
# インストールした全てのパッケージを表示する。
% pip3 list
# インストールしたパッケージを「pip install」向けの形式で表示する。
% pip3 freeze
# 「pip3 freeze」の結果は「requirements.txt」に保存するのが一般的。
% pip3 freeze > requirements.txt
# 「requirements.txt」のリストの全ライブラリをインストールする。
% pip3 install -r requirements.txt