**セクション8 **モジュール
みなさん、こんにちは。前回のレッスンでは、pythonの機能を学びました。これから、Pythonプログラミングは、いくつかの基本的なオブジェクト(定数と変数、演算子と式など)とフロー制御ステートメントを介してコードを記述するだけでは達成できないことがわかります。一部の単純なアプリケーションは、関数を作成することにより、より複雑なプログラム構造を構築することもできます。
もちろん、比較的複雑な問題を解決でき、単純なコードの再利用を実現できる場合でも、一般的なプログラムフローに関数を埋め込むことを学びました。
ただし、他の高レベルの言語と比較すると、これではまだ十分とは言えません。ここでやめると、大規模で複雑なアプリケーション要件に直面したときに、1つまたは複数のアプリケーションを使用してそれを処理することは困難です。では、Python用のより高度なツールはありますか?もちろん、それはPythonと同じくらい魔法です。
機能よりも高度なツールには、次の2つの属性が必要です。
(1)その構造はより高くなければなりません。つまり、アプリケーションシステムアーキテクチャの構築に役立つはずです。
(2)カプセル化された関数をシステム内のどこからでも便利に呼び出すことができ、コードブロックの再利用を最大化できます。
すべてのいわゆる知恵は、最終的にはエントロピーの増加を減らすことです。
これらの2つの項目を達成すると、プログラマーの反復作業が減るだけでなく、さらに重要なことに、システムの複雑さが軽減されます。このいわゆる「高度なツール」は、本日紹介するPythonモジュールです。
**Pyhtonモジュール(Modules)は、Pythonの最高レベルのプログラム編成ユニットであり、プログラムコードとデータをカプセル化して再利用できます。 ****
基本的に、すべてのpythonファイルはpythonモジュールです。さらに、モジュールが他のモジュールをインポートした後、インポートされたモジュールによって定義された変数と関数を直接使用できます。
だから、それは何も新しいようには見えません!
PS:はい、シャーロック・ホームズが答えを言った後、ワトソンは決して軽蔑していません。
基本的に、モジュールのインポート方法を学べば、モジュールの概念を簡単に適用できます。
モジュールをインポートするには、通常2つの方法があります。
1、 インポートステートメント
2、 from ... importステートメント
他の多くの優れたオブジェクト指向プログラミング言語と同様に、Pythonもこの高レベルの重要なオブジェクトを導入しました。これにより、いくつかの再利用可能な関数を統合してPythonファイルを形成できます。その後、任意のプログラムでインポートして、いずれかの機能を使用できます。
このアーキテクチャにより、プログラミング効率が大幅に向上します。その結果、重要なプログラミングの概念も導入されました。それは、問題を解決するためのメソッド(ソリューション)を構築する必要が生じた場合、それを再利用可能な関数に「カプセル化」するよう努めなければならないというものです。このようにして、次に同じまたは同様の問題が発生したときにコードを再利用する機会があります。 **これは非常に重要なプログラミングのアイデアです。
1、 インポートステートメント
まず、空のモジュールファイルmodule_1.pyを作成し、次のコードを追加します。
def func_sun(x):
if x==1:
print( '草原に昇る太陽!')
else:
print( '太陽が沈んで、幸せです!')
**説明:**このモジュールファイルには、正式なパラメーターxを持つ関数が含まれており、パラメーターが受け取った値が1に等しいかどうかに応じて、画面に表示する内容を決定します。
別のpythonアプリケーションを作成します:module_app_1.py(実際、これはまだpythonファイルであり、必要に応じてモジュールファイルとして使用することもできます)
import modlue_1
a=1
modlue_1.func_sun(a)
**説明:**このpythonプログラムは、importステートメントを介してモジュールファイルmodule_1をインポートし、その関数func_sun()を呼び出し、同時に実際のパラメーターaの値を関数に渡します。
OK、importステートメントのアプリケーションは次のようになります。学習しましたか?
2、 from ... importステートメント
次に、モジュールファイルmodule_1.pyとプログラムファイルmodule_app_1.pyを変更しましょう。
def func_sun(x):
if x==1:
print( '草原に昇る太陽!')
else:
print( '太陽が沈んで、幸せです!')
def func_month():
print( '月は私の心を表しています!')
**注:**モジュールファイルパッケージには、モジュールファイルの意味を確認できる新しい関数が追加されています。これは、いくつかの再利用可能な関数のコレクションにすることができます。実際、関数のコレクションはモジュールをより意味のあるものにすることができます。
a=1
b=2
if a==b:
from modlue_1 import func_sun
func_sun(a)
else:
from module_1 import func_month
func_month()
**注:**実際、重要なポイントはここにあります。from... importステートメントを使用してモジュールファイルmodule_1の関数を直接インポートし、それをローカル関数のように使用します(このアプリケーションファイル内)。
警告: pythonはfrom ... importステートメントをサポートしていますが、プログラムでの名前の競合を回避し、プログラムを読みやすくするために、この方法でモジュールファイルを使用することを避け、単純な使用を選択する必要があります。 importステートメントの方が明らかに優れています。
3、 Pythonの組み込みモジュール
pythonに多くの組み込み変数と関数があるのと同様に、pythonにも、osモジュール、sysモジュール、hashlibモジュール、time&datetimeモジュールなどの多くの組み込みモジュールがあります。これらの組み込みモジュールのカプセル化は、アプリケーション開発を実現するための非常に便利です。
たとえば、sysモジュールには次の組み込み関数(の一部)が含まれています
sys.argvコマンドラインパラメータリスト。最初の要素はプログラム自体のパスです。
sys.exit(n)はプログラムを終了し、正常に終了する場合はexit(0)
sys.versionPythonインタープリターのバージョン情報を取得します
sys.maxint最大のInt値
sys.pathは、初期化中にPYTHONPATH環境変数の値を使用して、モジュールの検索パスを返します。
sys.platformは、オペレーティングシステムプラットフォームの名前を返します
4、 sys.path
ここで、pythonモジュールを使用する際の重要な問題、つまりモジュールファイルのパスを思い出させてください。パスが正しく設定されていないと、モジュールファイルとその内部変数および関数リソースを正常に使用できません。
python組み込みモジュールの場合、Pythonをダウンロードしてインストールするときにモジュールがすでに構成されているため、モジュールの場所を見つける方法を自然に知っています。ただし、モジュールをカスタマイズする場合は、特に注意する必要があります。モジュールをインポートするとき、pythonインタープリターはsys.path変数によって提供されるディレクトリから検索します。対応するモジュールが見つかると、モジュール内のステートメントが実行を開始し、ユーザーが使用できるようになります。
PS:sys.pathを呼び出すと、sys.pathの最初の文字列が空であることがわかります。この空の文字列は、sys.pathの一部でもある現在のディレクトリを表します。
**sys.pathおよびPYTHONPATH環境変数は一貫しています。これは、現在のディレクトリにモジュールを直接インポートできることを意味します。それ以外の場合は、sys.pathにリストされているディレクトリにモジュールファイルを配置する必要があります。また、PYTHONPATH環境変数を変更して、モジュールファイルが配置されているディレクトリパスを追加することもできます。 ****
5、 dir関数
Pythonの組み込みdir()関数は、オブジェクトによって定義された名前のリストを返すことができます。
dir()はパラメーターを受け入れます。パラメータがモジュール名の場合、関数はこの指定されたモジュールの名前のリストを返します。パラメータが指定されていない場合、関数は現在のディレクトリ内のすべてのモジュールの名前のリストを返します。
dir()
['__ annotations__', 'builtins', 'doc', 'file', 'loader', 'name', 'package', 'spec', 'a', 'b', 'func_sun', 'i', 'sys']
パッケージ
機能やモジュールの概念を理解した後、私たちは自分たちのスキルを発揮しようと熱心に取り組んでいるようです。
ちょっと待って!
私たちが今学んでいるのは単なる入門コースですが、これまでのところ、実際に多くの、あるいはいくつかの複雑なアプリケーションを書くことができます。では、アプリケーションの需要に直面して、このアプリケーションプロジェクトの基本構造をどのように編成するかについても理解し始める必要があります。したがって、パッケージの概念を理解する必要があります。
パッケージは、モジュールを階層的に編成する方法です。より具体的には、これはフォルダーです。モジュールと特別な__init__。pyファイルが含まれています。この特殊ファイルはパッケージの識別子です。通常、パッケージフォルダの作成時にIDEによって自動的に作成されるコンテンツのない空のファイルです。ただし、このファイルがないフォルダはパッケージとは言えません。
したがって、簡単な理解は次のとおりです。** init。pyファイルを含むフォルダーはパッケージであり、モジュールファイルを階層的に明確に編成できます。 ****
たとえば、「ab」という名前のパッケージを作成するとします。このパッケージには、「a」や「b」などの他のサブパッケージも含まれ、これらのサブパッケージにはすべて「a1」や「b1」などのモジュールが含まれます。
この場合、このパッケージフォルダの構造は次のとおりです。
ab/
__ init__.py
a/
__ init__.py
a1/
__ init__.py
m_a.py
b/
__ init__.py
b_1/
__ init__.py
m_b.py
概要
このセクションでは、Pythonモジュールについて学習しました。関数の理解と同様に、モジュールはプログラムコードの再利用の問題をより適切に解決するだけでなく、アプリケーションの組織構造を別の次元に導く重要な組織形態のアプリケーションアーキテクチャでもあります。実際、Pythonに付属している標準ライブラリは、パッケージとモジュールの非常に重要な例のセットです。
**親愛なる学生の皆さん、この時点で、Pythonの基本的な入門知識のための学習タスクの第1フェーズを完了しました。学んだことを生かして、日々のニーズを解決してみてください。たとえば、ランダムな数字の文字列がある場合、どのように小さいものから大きいものへと並べますか。または、1から10000の範囲の連続した整数に直面して、それらを合計して合計する方法は?それを試してみてください、多分あなたはそれをすることができますか? ****
プレビュー
次のレッスンでは、非常に重要な概念であるデータ構造について説明します。これは、pythonアプリケーションが強力に見える重要な理由であると言えます。また、pythonエントリの知識構造を構成する非常に重要な構成要素でもあります。
Recommended Posts