\r\n\r\n

Pythonで独自のモジュールを作成、インポート、再利用する方法

Pythonにおけるコードの再利用性の重要な基盤であるモジュールについて説明します。

Pythonプログラマーのエキスパートであれ、初心者であれ、import modulesコマンドを使いこなす必要があります。しかし、初心者のうちは、これらのモジュールがどこから出てくるのかわからないかもしれません。

ここでは、これらのモジュールの成り立ちと、再利用するためのモジュールの作成方法、インポート方法について詳しく見ていきましょう。

コードの再利用性とその理由は何ですか?

多くのサーバーサイド言語を使用する際のベストプラクティスの1つは、コードをモジュール化し、再利用可能にすることです。Pythonはオブジェクト指向であるため、コードの再利用が可能な言語の一つである。

コードのモジュール化とは、ブロック内で異なる命令を実行するようにコードを記述することで、タスクとタスクを分離するために使用されます。

コードの一部をモジュール化する場合、そのコードに一意な名前を付けます。この名前が識別子となり、次にそのコードブロックを使うときには、コード全体ではなく、その名前で呼び出せばよいことになります。

このアプローチにより、実際のプロジェクトでより簡単に、より速く作業できるようになります。また、コードのモジュール化により、実行速度が上がり、テストが容易になります。基本的には、コードをより効率的に、読みやすくするものです。

ここでの例は、オブジェクト指向プログラミング(OOP)に基づくものではありませんが、モジュールの作成に進む前に簡単に説明しておくことが重要です。

再利用しようとするコードは、時には別の関数として独立することがあります。しかし、クラスの中のメソッドという形でもいいのです。ここで、OOPの概念が登場する。

Pythonによるオブジェクト指向プログラミング

OOPとは、コードをクラスという独立したオブジェクトとして表現することであり、それぞれが独自のプロパティとメソッドを持つ。

これらのプロパティはクラスの特性であり、各メソッドはプロパティの振る舞いを定義する。

手続き型プログラミングの慣習である長くて非効率なコードを書くのとは異なり、OOPではコードがより効率的になり、より具体的になるのです。その理由は、手続き型プログラミングでは関数とデータが分離されているのに対し、OOPでは別々のクラスに格納されるからです。

作成した各クラスは識別子を使用するため、クラス内の名前付きモジュールが必要な場合、そのクラスを参照し呼び出すことができます。

より深く理解するために、OOPのビギナーズガイドをご覧ください。

再利用可能な関数の生成:例

次に、ワードカウンター関数を別のPythonファイルで再利用する方法について見てみましょう。このガイドでは、オブジェクトの内部にない再利用可能な関数を作成することのみを対象としています。

まず、コンピュータの任意の場所でコマンドプロンプトを開き、新規プロジェクトを立ち上げます。この例では、word_ucountというプロジェクト名を使用します。そのためには、mkdir word_ucount と入力します。

次に、好みの仮想環境ツールを使って、新しい仮想環境を作成します。すでに作成されている場合は、アクティベートするだけです。プロジェクトのディレクトリに残っていることを確認してください。

良い習慣として、ワードカウンター機能を作るには、まず、それを計算するための生の公式を見つけるようにします。一般に、文章中のスペースの数に1を足すと、単語の数を数えることができます。なお、語数は必要ないかもしれませんが、この考え方とコードの再利用性の関係こそが、この記事の焦点です。

次に、プロジェクトの場所でテキストエディタを開き、Pythonファイルを新規に作成します。この例では、ファイル名を text-counter.py としています。正しい拡張子 .py を使用していることを確認してください。

ワードカウンターファイルはこんな感じです。

# create a variable called word that holds some stringsword = ['how to make a word counter in python']# Next, loop through the variable to count the words in the created variableNumberOfWords = [EachWord.count(' ') + 1 for EachWord in word]print(NumberOfWords)output: [8]

元のコードはちゃんと動くので、コードを再利用可能にする機能を作ってモジュール化します。

def CountWords(words):if words is not None:NumberOfWords = [Eachword.count(' ') + 1 for Eachword in words]return NumberOfWordsmywords = ['making a word counter in python']print(CountWords(mywords))output: [6]

再利用の仕方を見てみよう。

作成したモジュールのインポート

以前、textCounter.pyというファイルを作成したことを思い出してください。 このファイルには、CountWordsという関数が含まれています。この関数を新しいファイルで使用する必要があり、コードや関数全体を書き換えたくない場合は、関数をモジュールとして新しいファイルにインポートするだけでよい。

この例では、すべてのPythonファイルが同じディレクトリに配置されている必要があることに注意してください。これを確認するには、単にテキストcounter.pyファイルを入れてもらうだけです。

新しいドキュメントは以下の通りです。

from wordcounter import CountWordswords = ["how to import and reuse your code in Python"]CountWords(words)output: [9]

上記のコードスニペットでは、CountWordsはテキストカウンター.pyファイルです。この関数を新しいPythonファイルで再利用するために、親ファイル(text-counter.py)からインポートします。

作成したモジュールのインポート

新しいファイルがモジュールファイルと同じディレクトリにない場合は? このような場合、モジュールは絶対インポートを使って参照する必要があります。

これをさらに理解するために、プロジェクトディレクトリに新しいファイルを作成したと仮定します。しかし、関数をインポートするファイル(この場合はwordcounter)は、プロジェクト・ディレクトリの別のフォルダにあり、このフォルダをsubwordu countと呼ぶことにします。

wordcounter (現在は subwordu count フォルダにあります) から新しい Python ファイルにモジュールをインポートするには、絶対にそれを呼び出す必要があります。この動作を確認するには、プロジェクトディレクトリに新しいファイルを作成し、好みの名前を付けてから、次のスニペットの説明に従ってモジュールをインポートしてください。

from subword_count.wordcounter import CountWordswords = ["how to import and reuse your code in Python for files in different folders."]CountWords(words)output: [14]

絶対インポート時に、Pythonは親フォルダ(この場合はsubwordu count)を参照し、目的の関数(CountWords)を含むファイルまたはモジュールを見つけます。

上記の絶対インポートの意味を分解すると、subwordu count はテキスト counter.py ファイルを含むプロジェクトディレクトリとなります。そして、このファイルにはCountWords関数が含まれています。

コードの再利用性はどこで発揮されるのか?

コードのモジュール化と再利用は、どのようなプロジェクトにおいてもベストプラクティスである。頻繁に行われるであろうOOPを書く場合は、モジュールからクラスをインポートするか、クラスから関数を呼び出すようにします。クラスがフォルダーにある場合は、絶対に新しいファイルにインポートしてください。

オブジェクトに含まれない関数も同様です。プロジェクトのレイアウトに応じて、上記のように明示的にインポートすることも、絶対的にインポートすることも可能です。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ