こんにちは!
ENHANCERのPengです!
今回はPythonにおける「モジュール」について解説していこうと思います!
モジュールとは
さて、そもそもモジュールって何でしょう。
モジュールとは、
分割したコードを書いておくファイル
のことです。
言い換えれば、Pythonのコードが書かれた「.py」ファイルがモジュールです。
Pythonでは、あるモジュールから別のモジュールのコードを使うことができます。
組み込みモジュール
それではこれから実際にコードを書きながら進めていきましょう。
Google Colaboratoryの準備はいいですか?
Pythonにはもともと組み込みモジュールと呼ばれるモジュールが存在し、適宜インポートして使うことができます。
モジュールのインポート
今「インポート」という言葉が出てきましたが、モジュールを使うにはまずモジュールを「インポート」する必要があります。
「インポート」とは、これから使うモジュールをPythonに伝える作業です。
import [モジュール名]
次の例では、Pythonに組み込みモジュールである「math」をインポートしています。
#mathモジュールをインポート
import math
このようにモジュールをインポートしたら、次の構文でモジュール内のコードを利用できるようになります。
[モジュール名].[コード]
ここでいう[モジュール名]は先ほどインポートしたmathで、コードはそのモジュール内にある関数や変数などの名前です。
mathモジュール
次のコードでは、mathモジュールをインポートした後に、そのなかのpow関数を呼び出して2の3乗を行っています。
#mathモジュールをインポート
import math
#mathの中のpow関数を用いる
math.pow(2, 3)
8.0
pow関数は pow(x, y) の記述で、xのy乗を計算する関数です。
randomモジュール
また、mathだけでなく「random」という組み込みモジュールもあり、そのなかの「randint関数」は整数の乱数を作れます。
#randomモジュールをインポート
import random
#指定した範囲の乱数を発生
random.randint(0, 500)
215
ここの出力は毎回変わるので、必ず215になるわけではありません。
乱数を発生させているので、出力はランダムです。
statisticsモジュール
また、「statistics」モジュールを使うと、整数のリストから平均値(mean)、中央値(median)、最頻値(mode)を出力できます。
#statisticsモジュールをインポート
import statistics
#平均値(mean)
number = [1, 50, 4, 22, 4, 18, 27]
statistics.mean(number)
#中央値(median)
statistics.median(number)
#最頻値(mode)
statistics.mode(number)
18
18
4
ここで皆さんはいちいちstatisticsと打ち込むのが面倒だと感じたと思います。
実はモジュールは自分の好きな文字列としてインポートすることもできます!
#statisticsをstとしてインポート
import statistics as st
#平均値(mean)
st.mean(number)
18
だいぶ楽になりましたね!!
自分でモジュールを作ってインポートしてみよう
次に自分でモジュールを制作して、インポートして使ってみましょう。
Google Colaboratoryでファイルをインポートする方法
まず、Google Colabratoryで「ファイル」→「ノートブックを新規作成」から新しいノートブックを開いてください。
開いたら、左上のファイル名を「hello」にしてください。
そして以下のコードを入力して、「Ctrl + S」でファイルを保存してください。
#コードを定義
def print_hello():
print("こんにちは!")
そのあと、「ファイル」→「ドライブから探す」でGoogleドライブに行きます。
そして、このファイルが保存されている場所を選択して(今回の場合はColab Notebooks)、新しいフォルダを選択し、「project」という名前にして保存してください。
また、同様にして、「project」のフォルダの中に「module」というフォルダを作成してください。
そしてprojectのフォルダの中に、先ほど作った「hello」と、今までコードを打っていたファイル、または新しいファイルを制作して移動させてください。
すべて完了するとこんな感じになっていると思います。
helloの上の.ipynbファイルがこれからhelloファイルをインポートして動作を行うファイルだと思ってください。
では、helloファイルを開いて、「ファイル」→「.pyファイルをダウンロード」から、ファイルを「.py」ファイルとしてダウンロードしましょう。
ダウンロードすると警告が出ますが、そのまま実行してもらって大丈夫です。
ダウンロードが済んだら、ダウンロードしたファイルを先ほど作ったGoogleドライブ上の「module」フォルダにアップロードします。
これで第1関門突破です!
続いては今移動したファイルをインポートするために、Googleドライブをマウントしなければなりません。
※マウントとは、「利用可能にする」という意味だと思ってください。
Googleドライブをマウントする
では、これからhelloをインポートして実行するファイルの方での操作を行います。
Googleドライブをマウントするには、左のファイルのマークから以下のドライブをマウントするボタンを押せばマウントすることができます!
コードでマウントする
上の方法が簡単ですが、コードを直接入力してマウントすることもできます。
ここではその方法を説明します!
ファイルを開いて、以下のコードを打ち込みます。
#Googleドライブをマウントする
from google.colab import drive
drive.mount('/content/drive')
これを実行すると、URLと入力する場所が表示されます。
Go to this URL in a browser: https://accounts.google.com/o/oauth2...
Enter your authorization code:
URLをクリックし、許可を求められるので「許可」ボタンを押した後、コードが表示されます。
そのコードコピーし、元の入力する場所にペーストすればマウントできます。
パスを通してインポートできるようにする
マウントができたら、以下のコードでパスを通してインポートができるようになります。
#sysをインポートしてモジュールを使えるようにする。
import sys
sys.path.append('/content/drive/My Drive/Colab Notebooks/project/module)
これでファイルをインポートする準備が整いました!!
実際にインポートしてみる
それでは早速インポートしていきましょう。
以下のようにコードを入力すれば、moduleに入れた「.py」ファイルである「hello.py」から関数を呼び出すことができます。
#別で作ったhello.pyをインポートして使う
import hello
hello.print_hello()
こんにちは!
いかがでしょうか。
今回の注意点としては、
Google Colaboratoryでは拡張子操作で「.py」ファイルを作成することができないので、作ったファイルを「.py」として保存しなければならない
という点です。
インポートは「.py」ファイルである必要があるため、このような作業が必要なんですね、、。
また、モジュールには「インポートすると、そのモジュールのコードがすべて実行される」という特徴もあります。
ではmodule1という新しいファイルを開き、以下のようにコードを入力してください。
print("こんにちは!")
for i in range(100):
print("北斗百裂拳")
そして、このファイルを「.py」ファイルとしてダウンロードし、「.py」ファイルを「module」フォルダに保存してください。
そしたら、元のファイルに戻ってしたのようにコードを入力してみます。
import module1
こんにちは!
北斗百裂拳
北斗百裂拳
・
・
・
これでは非常に不便ですね。モジュールをインポートするたびにこんなに殴られては体がもちません。
では、どのようにすればいいのでしょうか。
if _name_ == “_main_”:というコードがそれを救ってくれます。
それはこのように使います。ここではmodule2というファイルを作ります。
#module2.pyのコード
if __name__ == "__main__":
print("こんにちは!")
for i in range(100):
print("北斗百裂拳")
こんにちは!
北斗百裂拳
北斗百裂拳
・
・
・
#実行するファイルのコード
import module2
なにも実行されません。やりました!!
このコードを打ち込むと、元のファイルでは実行されますが、インポート先のファイルでは実行されなくなります。
練習問題
さあ、ここまでやってきた内容を活かして練習問題を解いてみましょう!
- mathモジュールを別の名前で呼び出してみよう。そのあと、ある数の入力を引数として受け取り、その数を3乗した数を出力しよう。
- 1.で作ったコードを関数として定義して別のファイルに保存し、インポートして使ってみよう。
おわりに
モジュールとは何かはいかがだったでしょうか。
モジュールは非常に便利なので、皆さんも使ってみてください!
インポートするにあたっていろいろエラーが出るかもしれませんが、根気よく頑張っていきましょう!
今回ご紹介したコード、問題の解答例はGitHubにアップしてありますので、以下のリンクからそちらも併せてご確認ください!
※動作確認はしていますが、正常に動作しなくなることがあります。
また、GitHubの使い方、コードの見方などはこちらにまとめてあります!
またはこちら!
それではまた次回の記事でお会いしましょう!
お疲れ様でした!!
ENHANCER Peng
“【Python初心者】モジュールとは” への1件の返信