【入門者向け】Pythonにおけるモジュールの実装①|Python入門 #9

f:id:lib-arts:20190804170008p:plain

#1ではPythonを用いたFizzBuzzのコーディングについてまとめました。

入門者の方に読んでみていただいたところ、少し難しかったようなので、#2以降では#1で触れた基本文法をそれぞれもう少し丁寧に解説を行なっていきます。基本的には下記のPythonのドキュメントのチュートリアルなどを元にして解説していきます。

Python チュートリアル — Python 3.7.4 ドキュメント

#2ではPythonにおける四則演算・文字列について、#3ではリスト・タプル・辞書について、#4ではPythonの制御構文について、#5ではPythonの入出力に関して、#6ではPythonの関数の実装について、#7ではPythonにおけるクラスの実装について、#8ではPythonにおけるクラスの継承とオブジェクト指向について取り扱いました。

【入門者向け】Pythonの基礎文法① 四則演算・文字列|Python入門 #2 - lib-arts’s diary

【入門者向け】Pythonの基礎文法② リスト・タプル・辞書|Python入門 #3 - lib-arts’s diary

【入門者向け】Pythonの基礎文法③ 制御構文(if、for)|Python入門 #4 - lib-arts’s diary

【入門者向け】Pythonの入出力の実装|Python入門 #5 - lib-arts’s diary

【入門者向け】Pythonの関数の実装|Python入門 #6 - lib-arts’s diary

【入門者向け】クラスの概要とPythonにおける実装|Python入門 #7 - lib-arts’s diary

https://lib-arts.hatenablog.com/entry/entrance_python8
#9ではSection6をベースにPythonにおけるモジュールの概要の理解と簡単な実装について取り扱います。

6. モジュール — Python 3.7.4 ドキュメント

以下目次になります。
1. Pythonのモジュールの概要の把握
2. Pythonにおけるモジュールの実装(Section6)
3. まとめ


1. Pythonのモジュールの概要の把握
1節ではPythonのモジュールの概要の把握ができればと思います。

f:id:lib-arts:20190903194431p:plain

6. モジュール — Python 3.7.4 ドキュメント
モジュールの説明としては、ドキュメントのチュートリアルのSection6の冒頭がわかりやすいので、上記キャプチャを元に確認していきます。
モジュールは「スクリプトをいくつかのファイルに分割した際に定義をコピーすることなく個々のプログラムで使えるようにしたもの」と把握しておくと良さそうです。読み込みにあたってはプログラムを動かす際によく出てくるimport文を用いて行うとあります。とにかく目的としては外部ファイルで実装した機能を気軽に使い回したい際に用いるのがモジュールであると把握しておくと良さそうです。
モジュールについてはだいたい概要がつかめたので次に2節で実際に実装を元に確認していきます。

 

2. Pythonにおけるモジュールの実装(Section6)
2節ではモジュールの実装例を確認していきます。

def fib(n): # write Fibonacci series up to n
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()

def fib2(n): # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result

まずは上記を記述したファイルをfibo.pyとし、作業ディレクトリに保存しましょう。

f:id:lib-arts:20190903204839p:plain

Jupyterで実行している場合は上記のようになっていれば良いです。この際に下記を実行します。

import fibo

fibo.fib(1000)
print(fibo.fib2(100))
fibo.__name__

実行結果は下記のようになります。

f:id:lib-arts:20190903205506p:plain

fibo.pyの実装を確認すると、関数fibはフィボナッチ数をprintしているのに対し、関数fib2はappendを用いてリストに追加し、返り値としてリスト形式のデータを返しています。

fib = fibo.fib
fib(500)

print(type(fib))

また、関数を度々使う際は上記のように代入を行うことができます。実行結果に関しては以下になります。

f:id:lib-arts:20190903210054p:plain

"fib=fibo.fib"のように関数を代入を行うことで、fibo.fibをfibで呼び出せるようになります。また、type関数でfibを確認すると、<class 'function'>となっており、function(関数)型のクラス(オブジェクト)になっていることが確認できます。
ここまででモジュールの実装についての基本的なところはつかめたので2節はここまでとします。


3. まとめ
#9ではPythonのモジュールの実装に関して簡単な概要について掴みました。
#10ではモジュールに関してより詳しく確認していければと思います。