python--パケットモジュール

I.はじめに

 

汎用パケットインポートモードは、次のステートメントによって実行されます。

インポートdir1.dir2.mod
 。Linuxで/に対応するスペーサーのパスを表しこのパスのMOD手段をファイルmod.pyと呼ばれ、ここでは省略されているの.py

 

 

  しかし、使用パッケージの輸入は制約を遵守しなければなりません:各ディレクトリ内のパッケージ__init__.py importステートメント内のパスが存在しなければならないことDIR1、DIR2は、この文書の__init__.pyを持っている必要があります。

そのようなimport文以上の場合は、次の規則に従う必要があります。

  • DIR1及びDIR2は、ファイル__init__.pyに含まれている必要があります
  • DIR0があれば、このファイルは無視されます、コンテナ、ノー__init__.pyファイルです。
  • DIR0は(DIR0の\ DIR1はなく)モジュール検索パスにリストされなければならない(つまり、ディレクトリは、メインカタログ、又はPATHONPATHの列でなければなりません)

Pycharmに設けられ、ルートファイル - >設定 - >プロジェクト構造並びにの除外容器マークソース(源)、(負)にフラグを設定することによって行われます。

 

1.__init__.py

__init__.pyは、通常のモジュールファイルと同様に、Pythonのコードを含めることができます。そのような宣言文書がある程度のPythonのように話す、しかし、それはまた、完全に空にすることができます。文のように、これらのファイルは不用意モジュール検索パスに隠された同じ名前のディレクトリを防ぐことができ、及びモジュールが本当に出現する必要があります後。

__init__.pyファイルは、ディレクトリのインポートを使用した場合、ディレクトリおよび名前空間*から(から...輸入*)を達成役割行動のためのモジュールを生成し、パッケージの初期化フックを果たしています。パッケージには、必要なデータファイル、接続データベースを作成するために、その初期化ファイル(__init__.py)を使用することができます。

 

*ステートメントの振る舞いから:高度な機能として、あなたは、インポートする必要があるもの、*文のフォームからインポートするディレクトリを定義するために__init__.pyファイルに__all__リストを使用することができます。

使用するには、*からのパッケージ(ディレクトリ)名は、それをインポートする必要がある場合、リスト内の__all__ __init__.pyファイルは、サブモジュールのリストの名前です。__いいえ__allがあれば、*文で自動的にそのディレクトリ内にネストされたサブモジュールをロードしません。代わりに、負荷のみディレクトリの__init__.pyファイル代入文は、変数名を定義します。プログラムコードにファイルを含めると、任意のサブモジュールのは明らかです。

 

2.相対的な導入

前の文から、あなたが今、彼らは(いわゆる同じモジュールパッケージにする必要があることを指定するには、ドットを(「」)を使用することができますインポートするパッケージの相対的ではなく、どこかインポートモジュール上のモジュール検索パスに比べて、)(絶対インポートと呼ばれます) 。

それは、モジュールb.py.の輸入を希望する場合は、フォルダは、__init__.py、a.py、b.pyが存在するような

インポートのb #はbはあなたが最終的には、次のと同じ効果が再生されます、存在しないモジュールの名前と同じである場合には、お勧めしません
から輸入のB #が比較的インポートされ、適切な言葉遣いをお勧めするだけでなく、相対的な輸入強制する
から .A インポート VAR1の変数varという名前のモジュールからインポート

 

 

しかし、最初に相対して、絶対的なデフォルトの検索順序python2.xに、python3.xに対し、最初に絶対、相対検索順序です。一貫性とコードpython2を維持するために(すなわちpython2も互換性のあるコードで書かれた)次の文を追加する必要があり、中のpython3:

 __future__  インポート absolute_import

 

 相対スコープの紹介:

  • バッグにのみ適用され、相対導入ご紹介します。
  • 反対の声明からの輸入のためにのみ。そして、モジュール名の前の数から1つのまたは複数のポイントを持っています。

 

モジュールは、ルールの要約を探します:

  • 左から右への単純なモジュール名(例えば、A)は、検索パスのsys.pathリストの各ディレクトリ内を検索します。システム設定およびユーザー構成設定コンポーネントによって、デフォルトのリスト。
  • パッケージには、特別な__init__.pyファイルと直接ディレクトリpychonモジュールです。この導入は、このような1つのABCのディレクトリ・パスの構文を使用することができます。導入ABCにおいて、Aという名前のディレクトリが導入のsys.path従来の検索モジュールに対して位置決めされ、BはA、C又はBの別のパッケージのサブディレクトリが他の項目にモジュールを導入することができるされています。
  • パッケージファイルでは、と同じのsys.path検索ルールの残りの部分をインポートするために、従来のimport文を使用します。ドットの使用へのパッケージと、上記の声明からは、しかし、それはパケットを基準にしています。つまり、唯一のパッケージディレクトリをチェックして、従来のsys.pathルックアップを使用しないでください。たとえば、インポートAから、モジュールは声明の中で表示されるディレクトリ内のファイルを含めるように検索を制限します。

 

最後に、質問は:どのような状況下では、インポートを使用してパッケージから通過してはなりませんか?

あなたは、それがパッケージを使用するためにインポートする必要があり、同じ変数名に複数のパスを定義を読んでする必要がありますが、から使用することはできません。インポートを使用して、あなたは一意の参照のパスを作ることができる、しかし、任意の変数の名前から1つのバージョンのみを許可します。

 

おすすめ

転載: www.cnblogs.com/SsoZhNO-1/p/11402452.html