Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonモジュールの開発方法をわかりやすく解説!作成からインポートまで

Pythonモジュールとは?

Pythonには、関数や変数などの定義を1つのファイルにまとめ、それをスクリプトや対話型インタープリタから再利用する仕組みが用意されています。このような定義を格納したファイルのことをモジュールと呼びます。

モジュール内で定義された関数や変数は、他のモジュールにインポートして使うこともできますし、メインモジュール(トップレベルで実行されるスクリプトや電卓モードでアクセスできる変数群)に取り込むことも可能です。

モジュールはどのように検索されるのか

たとえば hello というモジュールをインポートするとき、インタープリタは以下の順序でファイルを探します。

  1. 実行中のスクリプトが置かれているディレクトリ内の hello.py
  2. 環境変数 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)もあわせて参照すると理解が深まります。

  1. 【Python】与えられた数がフィボナッチ数かどうかを判定する方法を解説

    本記事では、以下の問題文に対する解決策について詳しく学んでいきます。 問題の定義 数値 n が与えられたとき、その数がフィボナッチ数であるかどうかを判定します。 ご存知のとおり、n番目のフィボナッチ数は「直前の2つのフィボナッチ数の和」として定義されます。しかし、この漸化式以外にも、フィボナッチ数には興味深い数学的な性質が存在します。 フィボナッチ数の判定に使える重要な性質 ある数 n がフィボナッチ数であるのは、次の条件が成り立つ場合、かつその場合に限られます。 5×n² + 4 が完全平方数である または 5×n² − 4 が完全平方数である つまり、上記のどちらか一方(または両方)が

  2. Pythonのgetpassモジュールとは?パスワード入力とユーザー名取得の基本を解説

    Pythonの標準ライブラリには、ターミナル上で動作するアプリケーションにおいて、ユーザーの認証情報を検証してから処理を実行したい場合に役立つgetpassモジュールが用意されています。このモジュールには主に2つの関数が定義されており、セキュリティを意識したコマンドラインツールの開発に欠かせない存在です。 getpass() 関数:パスワードを安全に入力する getpass()関数は、ユーザーにパスワードの入力を促すための関数です。デフォルトでは、ターミナルに入力されたキーは画面に表示(エコー)されないため、第三者にパスワードを盗み見られる心配がありません。 また、プロンプトとして表示される