コードを別のファイルとして分割したモジュールと、それが格納されているライブラリについて解説します。これらも自分で作ることが可能ですが、まずは Python が用意してくれているモジュールを使ってみるところからはじめましょう。
目次
モジュールとは
モジュールとは『部品』という意味で、家具を組み立てる時に1つ1つのパーツを組み合わせて完成させるように、プログラムも機能ごとにパーツを分けて最後にそれらを組み合わせて完成させます。
モジュールは自分でも作ることができますが、他の人が作って公開しているものを読み込んで使用することも可能です。
特に汎用性の高いものはPythonインストール時に一緒にダウンロードされる標準ライブラリという場所に格納されています。
標準ライブラリに入っているものの一覧と詳細はPythonの公式ドキュメントに載っていますのでチェックしてみてください。
https://docs.python.org/ja/3/library/index.html
モジュールの使い方
モジュールを利用するにはインポート宣言が必要です。インポート宣言は次のように記述します。
import モジュール名
例えば標準ライブラリに収録されている randomモジュールを使うには次のように記述します。
import random
インポート宣言を記述することで宣言したモジュールの関数などが利用できるようになります。
では実際にrandomモジュールを使って1から10のうちランダムな整数を表示してみましょう。
import random num = random.randint(1, 10) print(num)
ランダムな整数を取得するにはrandomモジュールに用意されているrandint関数を使い、引数に範囲を指定してあげます。
実際にこのコードを何度か実行してみてください。実行するたびに1から10までの異なる数字が表示されるのがわかります。
このようにモジュール内の関数を呼び出すには
モジュール名.関数名()
と記述します。
モジュールから指定した関数だけを読み込むこともできます。
例えばrandomモジュールから上記のrandint関数だけを読み込みたい場合は次のように記述します。
from random import randint
特定の関数のみを読み込んだ場合は関数を使う時にモジュール名を指定する必要はありません。
例えば先ほどのランダムな整数を表示するコードをrandomモジュール全体を読み込むのではなく、randint関数のみを読み込んで記述した場合は次のようになります。
from random import randint num = randint(1, 10) print(num)
標準ライブラリを使ってみよう
Pythonの標準ライブラリにはrandomモジュールの他にもたくさんのモジュールが用意されています。実際にそのいくつかを使ってみましょう。
なお、モジュールをきちんと理解して使いこなすにはオブジェクトの理解が必要です。
オブジェクトについてはオブジェクト指向の章で詳しく解説しますので、ここでは「こんなこともできるのかー」程度に見ておいて下さい。
datetime
datetimeモジュールは日付や時間・時刻に関する処理ができます。
例えば現在の日付や時刻を取得するにはそれぞれ次のように記述します。
import datetime # datetimeモジュールをインポート now = datetime.datetime.now() # 現在時刻をnow変数に格納 print(now) # 現在の日時と時刻の全て print(now.year) # 現在の西暦年数 print(now.month) # 月 print(now.day) # 日 print(now.hour) # 時 print(now.minute) # 分 print(now.second) # 秒 print(now.microsecond) # マイクロ秒
実行結果は次のとおりです。
2020-02-13 03:18:06.534293 2020 2 13 3 18 6 534293
例えば次のように記述するとプログラムを作成した日時に関わらず、現在(実行した時点)の日付を取得することができます。
import datetime now = datetime.datetime.now() print("今日は" + str(now.year) + "年" + str(now.month) + "月" + str(now.day) + "日です")
実際に実行してみましょう。
今日は2022年10月17日です
このように、現在の日付が取得できます。
calendar
calendarモジュールはその名の通りカレンダーをプレーンテキストやHTML形式のソースコードとして取得・生成できます。
実際に2020年12月のカレンダーをプレーンテキストで表示してみましょう。次のように記述します。
import calendar # calendarモジュールをインポート print(calendar.month(2020, 12)) # 2020年12月のカレンダーを表示
プログラムを実行すると次のように表示されます。
December 2020 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
カレンダーは文字列型で取得されます。
さらにオプション引数wで列幅を、lで行幅を指定できます。実際に試してみましょう。
import calendar print(calendar.month(2020, 12, w=3, l=2)) # 列幅に3、行幅に2を指定
実行してみましょう。
December 2020 Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
さっきよりも列幅、行幅ともに広がっているのがわかります。
math
mathモジュールは数学関数を扱うためのモジュールです。
小数点以下の切り捨てや切り上げ、円周率を使った計算、三角関数を用いた計算などを行うことができます。
例えば小数点以下の切り捨て、切り上げを行うには次のように記述します。
import math print(math.floor(3.123)) # 小数点以下を切り捨て print(math.ceil(3.123)) # 小数点以下を切り上げ
実行してみましょう。
3 4
ちゃんと1行目では小数点以下が切り捨てられ、2行目では小数点以下が切り上げられていることがわかります。
これだけでは味気ないので円周率を使った計算もやってみましょう。
mathモジュールでは円周率πを参照することができます。
πは無理数ですがコンピュータで扱える数は有限なので誤差が出ることには留意しておきましょう。
import math print(math.pi) # 円周率πを出力 radius = 5 # 今回計算する円の半径を格納するradius変数を用意し、5を代入 print(2 * radius * math.pi) # 円周を計算して出力 print(radius * radius * math.pi) # 円の面積を計算して出力
では、実際に実行してみましょう。
3.141592653589793 31.41592653589793 78.53981633974483
円周率と、半径が5の円の円周・面積が計算されて出力されました。
このようにPythonのライブラリには便利なモジュールが多数用意されています。
これらは一からコードを書いて作成することも可能ですが、先人たちが作ってくれたモジュールを使えば作業効率をぐんとあげることができます。
どんなモジュールがあるか普段からざっくり調べておくと作業が捗りますよ。