質問: __init__.pyとは何ですか? pythonのソースディレクトリで__init__.pyとは何ですか?
回答: ディレクトリをpythonパッケージとしてラベル付けして__all__を定義することに加えて、 __init__.pyを使用すると、パッケージレベルで任意の変数を定義できます。 パッケージにapiのような方法で頻繁にインポートされるものが定義されている場合は、そうするのが便利です。このパターンは、pythonicの「フラットは入れ子になっているよりも優れている」という考え方に従うことを促進します。例これは私のプロジェクトの一例です。私はデータベースとやり取りするためにsessionmakerと呼ばれるsessionを頻繁にインポートしています。私はいくつかのモジュールで "データベース"パッケージを書きました:database/ __init__.py schema.py insertions.py queries.py 私の__init__.pyには以下のコードが含まれています。import os from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine engine = create_engine(os.environ['database_url']) session = sessionmaker(bind=engine) ここでsessionを定義しているので、以下の構文を使って新しいセッションを始めることができます。このコードは、「データベース」パッケージディレクトリの内側または外側から同じように実行されます。from database import session session = session() もちろん、これはちょっとした便利さです - 私のデータベースパッケージの "create_session.py"のような新しいファイルでsessionを定義し、次のようにして新しいセッションを開始することです。from database.create_session import session session = session() 参考文献ここで__init__.pyの適切な使用法をカバーしている非常に興味深いredditスレッドがあります: http://www.reddit.com/r/python/comments/1bbbwk/whats_your_opinion_on_what_to_include_in_init_py/ 大多数の意見は、__init__.pyファイルは「明示的な方が暗黙的より優れている」という考え方に違反しないように非常に薄くするべきだと考えているようです。