6つのモジュール
モジュールはPythonは、ファイルの定義と宣言が含まれている、ファイル名は接尾辞モジュール名での.py
なぜ使用モジュール:
あなたはPythonインタプリタを終了した場合は、以前に定義した関数を再入力、または来て、それが失われますので、我々は通常、プログラムの永久保存用ファイルに書き込まれ、それはPythonのtest.pyの方法で必要とされる実行することで、この時点で、test.pyは、スクリプトのスクリプトと呼ばれています
プログラムの発展に伴い、ますます多くの機能が、管理を容易にするために、我々は通常、1つのファイルにプログラムし、このプログラムの構造がより明確にし、管理が容易です。この時点で私達はちょうど実行するスクリプトとして、これらのファイルを置くことができない、あなたはまた、リサイクルの機能を実現するために、他のモジュールにモジュールとしてそれらを使用することができます
共通モジュール
collectionsモジュール
カウンター、両端キュー、defaultdict、namedtuple OrderedDictなど:上の組み込みデータ型(辞書、リスト、セット、タプル)に基づき、コレクションモジュールは、追加データのいくつかのタイプを提供します。
1)namedtuple:発電要素タプルのコンテンツにアクセスするための名前を使用することができ
我々は、タプルは、例えば、点の2次元座標は次のように表すことができ、同じコレクションを表すことができる知っています。
P =(1,2)
しかし、我々は、(2)を表すために使用され、このタプルを参照することは困難である参照座標
このとき、namedtupleは便利になりました
#1 namedtuple( '名称'、[属性リスト]) からコレクションをインポートnamedtupleの 点 = namedtuple(' 点' [ ' X '、' Y ' ]) P =点(1,2 ) のPX 、PY
同様に、座標、円を使用するように半径表す場合、namedtupleに定義することができます。
円= namedtuple(' 円'、[ ' X '、' Y '、' R ' ])
2)両端キュー:両端キューは、他の側から迅速にすることができ、追加のオブジェクトがリリース
データ記憶装置のリストを使用する場合、すばやくインデックスで要素にアクセスするが、要素を挿入および除去するリストは線形メモリ、大容量のデータであるため、効率が非常に低い挿入及び欠失である、非常に遅いです
両端キューキューとスタックに適した、双方向リストの効率的な挿入や削除を達成することです
コレクションインポート両端キュー Q =両端キュー([ ' A '、' B '、' C ' ]) q.append(' X ' ) q.appendleft(' Y ' ) qで
あなたは非常に効率的に頭に要素を追加または削除することができますので、両端キューリストはappend()とポップを()達成することに加えて、それはまた、()とpopleft()appendleftサポートしています
3)OrderedDict:注文辞書
辞書を使用する場合は、キーが故障している、dictの反復を行うことをするとき、我々はキーの順序を決定することはできません
あなたがキーシーケンスを維持したい場合は、OrderedDict使用することができます。
コレクションをインポートOrderedDict D = dictの([(' A '、1)、(' B '、2)、(' C '、3 )]) Dの#キーが乱れDICT OD = OrderedDictは([(' '1)、( ' D '2)、( ' C '、3 )]) OD #OrderedDictキーが順序付けされます
OrderedDict([( 'A'、1)、( 'D'、2)、( 'C'、3)])#注、キーの順序で配置することがOrderedDictが挿入され、キー自体はソートありません
4)defaultdict:デフォルト値で辞書
値の次のセットを持っている[11,22,33,44,55,66,77,88,99,90 ...]、66より大きいすべての値が辞書の最初のキーに保存され、値は以下の66になります第2のキーに格納された値に
即: {
'k1'
: 大于
66
,
'k2'
: 小于
66
}
1.モジュール
python自体は限りインストールが完了すると、これらのモジュールは、すぐに使用することができ、非常に便利なモジュールの多くを構築され
、当社のビルトインのsysモジュール、例えば、ハローモジュールを書き込みます
輸入のsys
デフテスト():
引数= sys.argvの
LEN(引数)== 1の場合: プリント( 'こんにちは、世界!' ) のelif LEN(引数)== 2 :プリント( '!Heool、%s'は%の引数[1 ])他:プリント( '引数が多すぎます' )__name __ == '__ MAIN__'の場合:テスト()
SYSモジュールをインポートした後、我々はSYSモジュールを指す変数を持って、sysは、この変数を使用するには、モジュールのsysのすべての機能にアクセスすることができ
、SYSモジュールのargv変数を持っているが、コマンドラインに保存されているすべてのパラメータをリストします。最初の引数は、たとえば、いつもの.pyファイルの名前であるため、argvの少なくとも一つの要素がある:
得られsys.argvの実行のpython3のhello.pyは、[「hello.py」]
SYSの実行のpython3のhello.pyマイケルは「得ARGV [「hello.py」、「マイケル」は ]
最後に、コードの2行注意します
もし__name__ == '__main__' :
テスト()
私たちがハローコマンド・ライン・モジュールのファイルを実行すると、他の場所でモジュールをインポートするときに、裁判官が失敗した場合、Pythonインタプリタは、特殊変数__name__の__main__を設定し、ハローにする
ため、このテストを作ることができれば、モジュールは、いくつかの余分なコードを実行するときに、最も一般的なテストを実行することですコマンドラインを実行
スコープを
モジュールに、私たちは関数や変数の多くを定義するかもしれませんが、我々は他の人に使用するいくつかの関数と変数、およびいくつかの機能Pythonで、_接頭辞によって達成され、私たちは希望と変数は、モジュール内でのみ使用し
、通常の関数と変数の名前は、直接参照することができる(公開)公開されています。例:ABC、X123、パイや他の
類似した__xx_ _そのような変数を直接参照することができる特別な変数ですが、このような上記__authorなどの特別な目的は、ある__、__ name__は特殊変数である
ハローモジュール定義のドキュメントあなたはまた、一般の私たち自身の変数を訪問__doc__特殊な変数を使用することができますコメントこの変数名を使用しないでください
。この関数や変数が_xxxと__xxxであるように 公共(プライベート)。直接そのよう_abcとして、引用されるべきではない、__ ABCなど
のpythonは完璧なプライベート関数または変数へのアクセスを制限する方法ではありませんので、私たちが言う前に、プライベート関数と変数は、直接引用符で囲むことができないのではなく、直接参照すべきではありません、しかし、それはプライベートなプログラミングの練習から関数や変数を参照するべきではありません
プライベートな関数や変数他人を引用してはならない、そして、彼らは何がありますか?例を参照してください。
デフ_private_1(名):
リターン'こんにちは、%s'は%名の
デフ_private_2(名):
リターン'こんにちは、%s'は%名の デフ挨拶(名): もしLEN(名)> 3 :リターン_private_1(名)他:リターン_private_2(名)
当社のモジュール()関数では、公共の挨拶、そしてプライベート関数を非表示にすることにより、内部ロジック、とても便利なコードのパッケージと抽象的である内部プライベート関数の詳細については気にしない挨拶()関数を呼び出し、すなわち:
関数がプライベートとして定義され、その全体が外部リファレンスを必要としない、唯一の公共のように定義された外部関数を参照する必要が
2.サードパーティ製モジュールのインストール
Pythonモジュールを、Pythonはの.pyで終わるファイルである、の.pyファイルはモジュール(モジュール)と呼ばれ、含まれているPythonオブジェクトの定義と文Pythonの
モジュールを使用すると、論理的に整理することができますあなたのPythonのコードセグメント
に関連するコードには、あなたのコードに簡単に使用することができますモジュールに割り当てられ、より理解
モジュールは、モジュールはまた、実行可能コードを含むことができ、関数、変数、およびクラスを、定義されています
たとえば、名前のabc.pyファイルABCがモジュールで、xyz.pyファイルがxyz、XYZとABCという名前のモジュールがそう他のモジュールとその我々の2つのモジュール名の競合を想定しています私たちは、モジュールパッケージを整理することができます。mycompanyの、名前abc.pyモジュールがmycompany.abcなり、この時間を置いた場合は、同様の、xyz.pyモジュール名がmycompany.xyzになりました
import文
モジュールが導入され
、次のように優れたモジュール定義した後、我々はモジュールの導入にimportステートメントを使用することができ、構文は次のとおりです。
インポートモジュール1 [、モジュール2 [、... moduleN]]
たとえば、モジュールの数学を参照するために、あなたはどこのファイルの先頭でインポート数学を使用することができます導入し、関数呼び出しの数学モジュールでは、あなたはこの引用符で囲む必要があります:モジュール名関数名を
インタプリタは、import文に遭遇した場合、モジュールは、現在の検索パスにインポートされる場合は
、検索パスインタプリタである第一検索しますすべてのディレクトリのリスト、あなたはモジュールsupport.pyをインポートすると、スクリプトの先頭に命令するために必要な
インポートモジュール:
インポートのサポートは、
今の機能モジュールを呼び出すことができます含まれてい
support.print_func(「Runoob」)
モジュールのみとなります関係なく、あなたがインポートモジュールは、何度も何度も実行されないようにインポートし、トリップ回数、一度にインポートしません
...インポート文
:Pythonの文は次のようである現在の名前空間の構文にモジュールから、指定されたセクションからインポートすることができます
[、NAME2 [、... nameN]] MODNAMEインポートNAME1から
例えば、モジュールのFIBをインポートしますフィボナッチ関数で、次の文を使用します。
FIBインポートfibnacciから
この文は、現在の名前空間にモジュール全体をFIBないだろう、彼は唯一、この文の実行にフィボナッチ単一のモジュールにFIBますが、グローバルシンボルテーブルであります
...インポート*文の
モジュールのすべての内容は、すべて現在の名前空間にインポートされているだけで、次のステートメントを使用する必要があることも可能である:
modnameのインポートから*
これは、モジュール内のすべてのアイテムをインポートする簡単な方法を提供し、ただし、この文はあまり使用すべきではない
、例えば次のように、我々はすべてのものの1回の数学モジュールを紹介したいと思います、構文は次のとおりです。数学のインポートから*
検索パス
は、モジュールをインポートすると、モジュールの位置については、Pythonのパーサの検索順序は次のとおりです。
1.現在のディレクトリ
2.そうでない場合は、現在のディレクトリに、Pythonは、シェル変数PYTHONPATHに各ディレクトリを検索
あなたが見つけることができない場合は3、 PythonはUNIXの下で、デフォルトのパスは、通常は/ usr / local / lib / pythonのある、デフォルトのパスが表示されます /
モジュール検索パスは、変数のsys.pathシステムモジュールに格納され、変数が現在のディレクトリが含まれ、PYTHONPATHおよびインストール処理は、デフォルトで決定されますディレクトリ
PYTHONPATH変数
環境変数として、シェル変数PATHとしての組成物、PYTHONPATHと構文のリストに含まれているディレクトリの数によってPYTHONPATH
Pythonでは、サードパーティ製のモジュールをインストールし、行ってパッケージ管理ツールピップを通じて
あなたがMacやLinuxを使用している場合は、ピップ自身をインストールし、このステップをスキップすることができます;#Windowsを使用している場合は、Pythonのコンテンツのインストールを参照してください。 、インストールがパスにpython.exeを追加し、PIPチェックされていることを確認し
ますが、インストールプログラムの価格ピップ再実行することができ、windowdコマンドプロンプトが見つからない場合は、コマンドプロンプトウィンドウでPIPを実行しようと
枕をインストールPIPを