Pythonモジュールの開発方法をわかりやすく解説!作成からインポートまで
Pythonモジュールとは?
Pythonには、関数や変数などの定義を1つのファイルにまとめ、それをスクリプトや対話型インタープリタから再利用する仕組みが用意されています。このような定義を格納したファイルのことをモジュールと呼びます。
モジュール内で定義された関数や変数は、他のモジュールにインポートして使うこともできますし、メインモジュール(トップレベルで実行されるスクリプトや電卓モードでアクセスできる変数群)に取り込むことも可能です。
モジュールはどのように検索されるのか
たとえば hello というモジュールをインポートするとき、インタープリタは以下の順序でファイルを探します。
- 実行中のスクリプトが置かれているディレクトリ内の
hello.py - 環境変数
PYTHONPATHで指定されたディレクトリの一覧
つまり、モジュールとして読み込ませたいPythonファイルは、スクリプトと同じ場所か、PYTHONPATHに登録されたディレクトリに配置しておく必要があります。
実際にモジュールを作ってみよう
ここでは例として、フィボナッチ数列を扱うモジュールを作成します。fibonacci.py という名前のファイルを作り、以下のコードを入力してください。
def fib(n): # n未満のフィボナッチ数列を出力する
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a+b
print()
def fib2(n): # n未満のフィボナッチ数列をリストで返す
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return resultこのモジュールには2つの関数が定義されています。ひとつは数列を直接画面に出力する fib()、もうひとつは結果をリストとして返す fib2() です。
モジュールをインポートして使う
次にターミナルを開き、cd コマンドで fibonacci.py があるディレクトリへ移動します。その状態でPythonシェルを起動し、以下のコマンドを実行してみましょう。
>>> import fibonacci >>> fibonacci.fib(1000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibonacci.fib2(100) [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
これで、自作モジュールの作成・インポート・実行という一連の流れが完了しました。インポートしたモジュールの関数を呼び出す際は、「モジュール名.関数名」の形式で指定する点に注意してください。
まとめ
Pythonでは、よく使う処理をモジュールとして1つのファイルにまとめることで、コードの再利用性と可読性を大幅に向上させられます。まずは今回のような簡単なモジュールから試してみるのがおすすめです。
モジュールの詳細な仕様や作成方法については、Python公式ドキュメントのチュートリアル(https://docs.python.org/2/tutorial/modules.html)もあわせて参照すると理解が深まります。
-
【Python】与えられた数がフィボナッチ数かどうかを判定する方法を解説
本記事では、以下の問題文に対する解決策について詳しく学んでいきます。 問題の定義 数値 n が与えられたとき、その数がフィボナッチ数であるかどうかを判定します。 ご存知のとおり、n番目のフィボナッチ数は「直前の2つのフィボナッチ数の和」として定義されます。しかし、この漸化式以外にも、フィボナッチ数には興味深い数学的な性質が存在します。 フィボナッチ数の判定に使える重要な性質 ある数 n がフィボナッチ数であるのは、次の条件が成り立つ場合、かつその場合に限られます。 5×n² + 4 が完全平方数である または 5×n² − 4 が完全平方数である つまり、上記のどちらか一方(または両方)が
-
Pythonのgetpassモジュールとは?パスワード入力とユーザー名取得の基本を解説
Pythonの標準ライブラリには、ターミナル上で動作するアプリケーションにおいて、ユーザーの認証情報を検証してから処理を実行したい場合に役立つgetpassモジュールが用意されています。このモジュールには主に2つの関数が定義されており、セキュリティを意識したコマンドラインツールの開発に欠かせない存在です。 getpass() 関数:パスワードを安全に入力する getpass()関数は、ユーザーにパスワードの入力を促すための関数です。デフォルトでは、ターミナルに入力されたキーは画面に表示(エコー)されないため、第三者にパスワードを盗み見られる心配がありません。 また、プロンプトとして表示される