2016-03-28 12 views
1

私は多種多様なプログラムを作成しています。そのために、たくさんの異なるパッケージとモジュールが必要です。それらのうちのいくつかは自分で書いたものもあれば、ダウンロードしたものもあります。__init__.pyは自己記述モジュールでは何ですか?

ダウンロードされたモジュールはすべて、メインディレクトリとサブディレクトリ内のランダムな場所にファイル__init__.pyを持っています。ここでは一例です:私はstackverflowに周りに検索した

/theexamplemodule 
    |-__init__.py #first 
    |-file1.py 
    |-file2.py 
    |-folder1 
    | |-__init__.py #second 
    | |-file3.py 
    |-folder2 
    | |-data.txt 
    | |-file4.py 

、私はこの「What is __init__.py for?初の1があると、なぜそれがモジュールまたはそのようないくつかのものとしてdirectorysを設定し、答えを見つけた...

しかし、なぜこの宣言は何であり、他のものは何ですか?

自分のモジュールはこれと似ていますが、__init__.pyファイルはありません。私は__init__.pyファイルの利点は得られません。これらの利点は何ですか?

+1

まず、モジュールとパッケージの違いを理解する必要があります。 –

+0

私は違いを知っていますが、私が得られないことは、 '__init __。py' filsの利点です。 –

答えて

3

"init .pyファイルは、Pythonがディレクトリをパッケージを含むものとして扱うために必要です;これは、stringなどの一般的な名前のディレクトリが誤って有効なモジュールを隠すのを防ぐためです。最も単純な場合、のinit .pyは空のファイルでもかまいませんが、パッケージの初期化コードを実行することもできますし、後で説明するの変数をに設定することもできます。

.pyという名前のファイルは、ディスク上のディレクトリをPythonパッケージディレクトリとしてマークするために使用されます。あなたは

mydir/spam/__init__.py 
mydir/spam/module.py 

とMYDIRがパス上にあるファイルがある場合、あなたにmodule.pyでコードをインポートすることができます。

輸入spam.module やスパムのインポートモジュール から

の場合init .pyファイルを削除すると、Pythonはそのディレクトリ内のサブモジュールを検索しなくなり、モジュールのインポートは失敗します。

INITの.pyファイルがINITモジュールの内容、上記の例が与えられるなど、通常空であるが、より便利な名前でパッケージの選択された部分をエクスポートするために使用することができる、便利な機能を保持します インポートスパム

+0

これはまさに私が知りたかったものです!ありがとうございます –

+0

Err、 "initモジュール"とはどういう意味ですか?ところで、アンダースコアがスタイルコマンドとして解釈されないように、 '__init __。py'のようなものの周りにバッククッキーを使うべきです。 –