モジュールはこうして呼び出される

Python
Photo by James Sullivan from Pexels

前回はキーワードと繰り返し処理2(while文)を見てきました。

今回は、外部プログラムを読み込む方法と
関数の再利用をメインに解説していきます。
またドライブへのアクセス方法も見ていきます。

次回辞書型を中心に解説し、
「見やすい」データの表示方法も学びます。

JUVET
JUVET

以前解説したノートブックの使い方を前提に説明していきます!

モジュールとは pythonファイルのこと

Anete Lusina from Pexels

これまで、Colabノートブックのセルに直接プログラムを書いてきましたが、
この先、以前作成した関数をもう一度利用したい場合や
外部のプログラムをセル上に読み込みたい場合が出てくると思います。

そういう時はコードを全てをコピーして貼り付けるというやり方でもいいのですが、
関数が多くなってくるとその作業は多くなり、現実的な解決策ではなくなります。

そこで関数を再利用するために、
pythonファイルを用意し、そこから関数を呼び出すというやり方がとられます。
こうしておくことで、たとえ関数が多くなっても、
pythonファイル単位でプログラムの管理ができるため、取り扱いが楽になります。

つまり、複数のプログラム(コード)を1つのファイルにまとめて
取り扱いを簡単にするということです。
特に、このようにまとめられた pythonファイルはモジュールと呼ばれます。

JUVET
JUVET

モジュールと聞いたら、
「コードがまとまったpythonファイルのことか」と軽く受け流しましょう!


まずは、ただの pythonファイル(拡張子が .py)を作成していきます。
以下のコードを実行すると test.py という空のpythonファイルが作成されます。

!touch test.py

先頭にあるエクスクラメーション(!)は、システムコマンドの目印です。
システムコマンドというのは、
PC(システム)に対して何らかの命令(コマンド)を行うときに使われるコードです。

これまで書いてきた Python のコードとは別で、
コンピュータそのものに指令を出すことができます。
※ ColabノートブックもPCなので、システムコマンドが使えるということです。

たとえば、上記の !touch というコマンドは
ファイルの新規作成を行いたいときに使われるもので、
これを実行すると、test.py という pythonファイルが作成されます。

test.py がどこに作成されたか確認しましょう。

フォルダのアイコンをクリックするとファイルの一覧が表示されます


フォルダのアイコンをクリックすると
以下の画像のように画面左側の表示が変わります。

ここに作成した pythonファイルが表示されるはずなので、
カーソルを合わせてダブルクリックします。

pythonファイルをダブルクリックすると画面右側にその中身が表示されます


コードを実行して間もない時や通信などの影響で
コマンドの結果がすぐに画面に反映されないことがあります。
そんな時は更新のアイコンをクリックして、結果が反映されるのを待ちましょう。

JUVET
JUVET

更新アイコンはよく使うので、ぜひ覚えましょう!


続いて、画面右側を見ていきます。
pythonファイルをダブルクリックすると、
以下の画像のように、そのファイルの内容(今は空)が表示されるので、
そこにコードを書いていきます。

test.pyを開いてコードを編集する

以前作成した年齢プログラムをそのまま貼り付けて保存します。
以下のコードです。

while True:
  age = input('あなたの年齢を教えてください。')

  try:
    age = int(age)
    if age <= 19:
      print("お酒は20歳から。")
    else:
      print("お酒には気をつけましょう。")
    break

  except ValueError:
    print('数字のみを入力してください。')


すると次の画像のように、ファイル名の左上にアスタリスク(*)が表示されます。
これはファイルを保存している最中なので、少し待ちましょう。

コードを貼り付けて保存されるまで待ちます

編集内容が保存されたら、以下のコマンドを書いて pythonファイルを実行します。

!python test.py


補足ですが、これまでコードを書くのに使っていた Colabノートブックは
書いたコードをセル上で即座に実行できましたが、
今作成した pythonファイル内のコードを実行するためには、
上記のコマンド(!python 〜.py)が必要になります。

実行したい pythonファイルを指定してセルを実行すると、
以下の画像のように見覚えのあるフォームが表示されます。

!python A で A.pyを実行します

このように想定する表示が出てきたのは test.py に書かれたコードが
Colabノートブックを介して実行されたからです。

さて、pythonファイルの使い方がわかったところで、
次は関数を書いて、ファイルを実行したときの挙動を確認してみましょう。
流れは先ほどと同じで、新たに tax.py を作成し、

!touch tax.py


以下のコードを tax.pyファイル内に貼り付けます。
以前作成した消費税込みの値段を出力する関数です。

def tax(amount):
  return amount * 1.1
tax.pyの作成


次に、tax.py を実行してみましょう。

!python tax.py


当然ですが、以前説明したように関数が定義されているだけなので、
特に何も起きません。

関数が定義されているだけなのでtax.pyを実行しても何も起こりません


ひとまず、ここまででシステムコマンドを使った
pythonファイルの扱い方を見てきました。

これまで学んできた Pythonのコードとは分けて考えると良いかと思います。
こういった簡単なコマンドも使えるようになると、
コードを介してコンピュータに命令を下せるようになります。

次はこの taxモジュール(tax.pyのこと)をセル上で呼び出す方法を見ていきます。

importでモジュールを読み込む

Photo by Victor from Pexels

先ほど作成した taxモジュールは、
実はまだセル上に呼び出すことができません。

なぜなら現時点でモジュールがどこにある(保存されている)のか、
あなた自身しか把握しておらず、
Colabノートブックにも
そのモジュールの保存されている場所を教えてあげる必要があるからです。

このようにセル上にない関数などを使うとき、
つまり外部(別の場所)にあるコードを使いたいときは
まずモジュールを読み込むための準備をします。

以下のコードで、
外部にあるモジュールを読み込めるようになります。

import tax


このように import モジュール名と書くと、
そのモジュール内のコードを(セル上で)使うことができるようになります。

以下は使用例で、
モジュール内にある関数を使う場合は、
「モジュール名.関数名」のようにドットでつなげて書きます。

result = tax.tax(39990) # モジュール名.関数名()

print("消費税(10%)込みのお値段: ", result)
出力: 

消費税(10%)込みのお値段:  43989.0


このように、別の場所にあるコードは
モジュールとして読み込んで使うことでコード全体がすっきりします。
また、一度定義した関数を再び使うことを関数の再利用といいます。

注意点として、
前回説明したようにコードは上から順に実行されるので、
import してからでないとその関数は使えるようにはなりません。
そのため、
import文は基本的にコードの先頭に書きます

また次のように書くことで
それ以降の記述を減らす方法もあります。

# from モジュール名 import 関数名
from tax import tax


ここでは taxモジュールから tax( )関数を読み込む例を示しています。
この場合、先ほどの例とは異なり、
tax.tax( ) と書く必要がなく、tax( ) だけで関数が使えるようになります。

また読み込めるものは関数だけでなく、
クラスや変数、値そのものなども読み込むことができます。

JUVET
JUVET

クラスについては今後説明する予定です!


次に、今作成した pythonファイルをドライブに保存していきます。

マウントでファイルへのアクセスを許可する

マウントアイコンをクリックします

ご自身のドライブにファイルなどを保存する場合、
まずは Colabノートブックからのアクセスを許可する必要があります。
これをマウントといいます。

見出し画像のように、
画面左側にあるマウントアイコンをクリックします。

すると以下のポップ画面が出現しますので、
「Googleドライブに接続」をクリックします。

「Googleドライブに接続」をクリックします


次に表示される画面は若干の違いがあるかもしれません。
ご自身のアカウントが選択できれば大丈夫です。

アカウント(メールアドレス)を選択します


ドライブのマウントは完了です。
無事接続されると以下のように「drive」と表示されます。

マウントができているとdriveが出現します


これで、先ほど作成した pythonファイルを
ドライブに保存する準備が整いました。

目的地までの道筋をパスという

Photo by Achim Bongard from Pexels

今回はファイルのコピーを作って保存することにしましょう。

まずはコピーをするためのシステムコマンドを書きます。
この時点ではまだセルを実行しないでください。

!cp tax.py

なぜならコピーを作る場合、
「どこに」保存するかを考えなくてはいけないからです。

つまり、以下のコマンドのように
!cp tax.py 以降に保存先が必要になるということです。

!cp ファイル名 保存先


そのため、まずは保存先を決めます。
今回はドライブ直下にファイルを保存することにします。

保存先は以下の画像のように drive上で一度クリックすると、
「MyDrive」フォルダが出現しますので、
このフォルダ上で、今度は右クリックを押し、
出現する選択肢の中から「パスをコピー」をクリックします。

パスとは目的地(保存先)までの行き方を指します


ここでパス(path)について少し説明しますと、
これは目的地(のフォルダ)までの行き方(道筋)を指すもので、
どういう順番でそのフォルダにアクセスしたら良いか示されています。

今回は保存先(ドライブ直下)が目的地になりますので、
ドライブ直下までの道筋が必要になるということです。

先ほどコピーしたパスを貼り付けましょう。

保存先のパスを貼り付けます


上の画像のように、
パスにはフォルダの階層構造が使われ、スラッシュ(/)で表現されます。

!cp tax.py /content/drive/MyDrive


貼り付けたパスについて説明します。

drive と MyDrive は
先ほどご自身のドライブをマウントしたときに出現したフォルダを指しています。

content は
Colabノートブックを起動した際にデフォルトで設定される作業場所で、
現在プログラムが作動している場所になります。

したがって、今回貼り付けたパスは
contentフォルダの中にある driveフォルダ内の MyDriveフォルダまでの
道筋を示しており、
プログラムがアクセスすべきフォルダの順番は
content → drive → MyDrive である
ということがスラッシュで表現されているのです。
※ 最後のフォルダ(MyDrive)が保存先です。

JUVET
JUVET

パスが間違っていると目的のフォルダまで辿り着けず、
ファイルが保存されないので注意しましょう!

まとめ

今回はモジュールを読み込む方法と関数の再利用について学び、
pythonファイルの作成や実行をシステムコマンドで行いました。

ファイルの保存先を指定する際に登場したパスは
今後、いたるところで目にすると思いますので押さえておくと良いでしょう。

また、ドライブをマウントすることで
ドライブ内のファイルにアクセスできることもお伝えしました。

今回出てきたルールは以下の通りです。

ルール8: importはコードの先頭に書く

内容についてご質問があればコメント欄からどうぞ

次回は Google MediaPipe(Face Mesh)の理解に先立って、
値の関連づけができる辞書型
以前お話しした見やすさを改良する f-string を使った
表示方法について学んでいきます。
※ MediaPipe とは Google が開発する機械学習(AI)システムです。



【P.S.】
@AI_JUVETをフォローしていただけると大変励みになります🙂

コメント

タイトルとURLをコピーしました