ブログに戻る

Python 3でのモジュール作成:チュートリアル

Python 3でのモジュール作成:チュートリアル

はじめに

Python は、世界中で最も一般的に使用されているプログラミング言語の1つです。 モジュール はPythonコードの重要な部分です。モジュールとは、簡単に言えば .py ファイルのことです(Python 3 の文脈において)。これは、任意のPythonファイルをモジュールとして参照できることを意味します。

これらのモジュールは、あらかじめ用意されたライブラリから取得することができます。詳細については、Python Standard Libraryを参照してください。これらはPythonをインストールする際、システムにインストールされます。それ以外の場合は、Pythonのパッケージマネージャーである pip を使用してこれらのモジュールをインストールできます。しかし、カスタムモジュールを作成したい場合はどうすればよいでしょうか?その場合は、Pythonで独自のモジュールを作成できることを知って嬉しく思うでしょう。

この詳細なガイドでは、Python 3でモジュールを記述してインポートするために必要な手順を説明します。

前提条件

始める前に、Python 3がインストールされ、プログラミング環境がセットアップされていることを確認する必要があります。まだ準備ができていない場合は、当社のtutorial on installing Python 3 and setting up a local programming environment on Ubuntu 16.04に従ってインストールを完了してください。

モジュールの書き方

まずはモジュールの記述から始めましょう。他のPythonファイルを作成するのと同様に、モジュールを記述します。一般的なモジュールは、関数、クラス、および変数の定義で構成されています。その後、そのモジュールを他のPythonプログラムに適用して使用できます。

理解を深めるために、例を考えてみましょう。たとえば、 hello.py という名前のファイルを作成したいとします。後でこれを別のファイルにもインポートします。プロセスの最初のステップは、関数を作成することです。この関数は、次のように Hello, World! を出力する役割を果たします。

現時点で、 python hello.py コマンドを実行しても結果は得られません。これは、プログラムにまだ何の指示も与えていないためです。動作させるには、モジュールをインポートする必要があります。

モジュールのインポート方法

関数として機能させるためにモジュールをインポートするには、同じディレクトリに2つ目のファイルを作成する必要があります。この新しいファイルを main_program.py と呼びます。両方のファイルが同じディレクトリになければならない理由は、モジュールがどこにあるかをプログラムに案内する必要があるためです。これは、組み込みではない新しいカスタムモジュールすべてに適用されます。

関数を呼び出すために、モジュール名にドット記法を使用しました。これを行うもう1つの方法は、 from...import メソッドを使用することです。ここでは、関数を world() と呼びます。そのためにモジュールを from hello import world としてインポートします。最後に、次のコマンドを実行できます。

コマンドを実行すると、次の出力が表示されます。

モジュールへの変数の追加

次に、モジュール内に定義を配置して、モジュールに変数を追加する方法を見てみましょう。

その後、 print() 関数で変数を呼び出します。 main_program.py ファイル内で呼び出します。

プログラムを実行すると、次の出力が表示されます。

モジュールへのクラスの追加

最後に、モジュールのためにファイル内でクラスを定義する方法を見てみましょう。例を続けて、 Octopus という新しいクラスを hello.py ファイル内に作成します。また、これに namecolor の属性を割り当てます。次に、それを出力可能にするための関数を追加します。

次に、クラスを以下のファイルの末尾近くに追加する必要があります。 main_program.py ファイル:

クラスは、次のコマンドで呼び出すことができます。 hello.Octopus() コマンド。これにより、ファイルのネームスペース内にある Octopus クラスの関数と属性が表示されます。そのため、次のように記述できます。 jesse.tell_me_about_the_octopus() を最後の行に、以下を呼び出すことなく記述できます。 hello。また、以下を使用せずにクラスの個々の属性を呼び出すことも可能です。 hello。例えば、単に以下を実行できます。 jesse.color。プログラムを実行すると、次の出力が表示されます。

モジュールを使用したコードの実装

モジュールを使用して定義を指定できるだけでなく、コードを実装するためにモジュールを使用することもできます。たとえば、次の world() 関数を実装したいとします。最初の hello.py ファイルを完全に書き換えます。

From the main_program.py ファイルから、インポート文以外のすべてを削除し、以下を残します。

プログラムが world() 関数を実装して実行するため、メインプログラムファイルを実行すると次の出力が得られます。

別のディレクトリからモジュールにアクセスする方法は?

モジュールの作成と変更方法がわかったところで、別のディレクトリからそれらにアクセスする方法を知る必要があります。これは、別のプロジェクトで特定のモジュールを使用する必要がある場合に便利です。そのための2つの方法を以下で説明します。

  • パスの追加

最初の方法は、すでにモジュールを使用しているプログラムファイルを使用してモジュールパスを有効にすることです。残念ながら、これを行ってもモジュールがシステム全体で利用可能になるわけではありません。そのため、これは一時的な解決策としか見なされません。プロジェクトの開発フェーズでよく採用されます。

追加プロセスを開始するには、まず sys モジュールや、使用する必要がある他の重要なモジュールをインポートします。これらをメインプログラムファイルにインポートします。 sys モジュールはPython標準ライブラリにあります。このモジュールには、システムに固有の基本的なパラメータや関数が含まれているため必要です。

もう一度、前の例を考えてみましょう。たとえば、 hello.py ファイルが /usr/sammy/ パスにあり、 main_program.py ファイルが別のディレクトリにあるとします。まず、sysモジュールを使用して hello モジュールを main_program.py ファイルにインポートします。次に、 /usr/sammy/ をパスに追加します。

パスを正しく設定すれば、 main_program.py ファイルはエラーなしで簡単に実行されます。両方のファイルが同じディレクトリにあったときと同じ出力が得られます。

  • Pythonパス

もう1つの選択肢は、Pythonパスを使用することです。ここでは、Pythonがモジュールやパッケージをチェックするパスにモジュール自体を追加します。ご想像の通り、これによりモジュールがシステム全体で利用可能になり、実行可能な永続的な解決策となります。

これを行うには、Pythonがモジュールをどこで探しているかを把握する必要があります。次のようなプログラミング環境からPythonインタプリタを実行する必要があります。

次のステップは、 sys モジュールをインポートすることです:

次に、システムパスを出力します:

これで、出力としてシステムパスが表示されます。少なくとも1つは存在します。ただし、プログラミング環境によっては複数存在する場合もあります。リストの中から、使用している環境を特定してください。メインシステムのPythonパスにもモジュールを追加したい場合があることを念頭に置いておいてください。表示は次のようになります。

最後に、 hello.py ファイルをこのディレクトリに移動し、次のようにモジュールをインポートします:

プログラムがエラーを出さずにファイルを実行できれば成功です。このプロセスの結果、システム上の任意のディレクトリからモジュールにアクセスできるようになります。

結論

このチュートリアルの目的は、Pythonモジュールの作成に慣れていただくことでした。これは、通常のPython .py ファイルを作成する方法と非常によく似ています。まず、Pythonモジュールとそれに関連する機能が実際に何であるかについて説明しました。次に、これらの定義をPythonの他のプログラミングファイルに適用する方法を学びました。最後に、モジュールのアクセシビリティの詳細を理解しました。これで、Python 3でのモジュールの作成方法と、それらへのアクセス方法がわかりました。

Pythonプログラミング言語に関する知識をさらに深めるには、当社のブログ の追加リソースを参照してください:

Happy Computing!

author

Pranay Kapgate

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。