ホームページ > バックエンド開発 > Python チュートリアル > Python 3.3 のパッケージには `__init__.py` ファイルが必要ですか?

Python 3.3 のパッケージには `__init__.py` ファイルが必要ですか?

Susan Sarandon
リリース: 2024-12-03 08:30:11
オリジナル
343 人が閲覧しました

Do I Need `__init__.py` Files for Packages in Python 3.3 ?

Python 3.3 の名前空間パッケージ

質問:

Python 3.3 では、依然として __init__ が必要ですか。インポート時のpyファイルパッケージは?

答え:

必ずしもそうではありません。 Python 3.3 では、「暗黙的な名前空間パッケージ」の概念が導入され、__init__.py ファイルなしでパッケージを作成できるようになりました。これらは、__init__.py ファイルを持つ通常のパッケージとは対照的に、名前空間パッケージとして知られています。

暗黙的な名前空間パッケージの使用例:

名前空間パッケージは特別に使用されます。複数のライブラリが異なる場所に存在し、同じ親パッケージにサブパッケージを提供する必要がある場合。たとえば、次の構造について考えてみましょう。

google_pubsub/             # Package 1
    google/                 # Namespace package
        cloud/              # Namespace package
            pubsub/         # Regular package
                __init__.py
                foo.py

google_storage/             # Package 2
    google/                 # Namespace package
        cloud/              # Namespace package
            storage/        # Regular package
                __init__.py
                bar.py
ログイン後にコピー

名前空間パッケージがないと、Python は通常のパッケージを自己完結型エンティティとして扱うため、「google_pubsub」と「google_storage」の両方のインポートは失敗します。 「google」および「google/cloud」ディレクトリから __init__.py ファイルを削除すると、これらのファイルは名前空間パッケージとして解釈され、Python インタープリターがモジュールとサブパッケージを見つけて「google」パッケージに提供できるようになります。

通常のパッケージと名前空間パッケージ:

ほとんどの場合、空のパッケージを使用して通常のパッケージを使用することをお勧めします。 __init__.py ファイル。その理由は次のとおりです。

  • 通常のパッケージは予測可能であり、保守が簡単です。
  • 多くの Python ツールとライブラリは、通常のパッケージが適切に機能することを期待しています。

結論:

名前空間パッケージは特定のシナリオでは役立ちますが、そうすべきです。控えめに使用されます。ほとんどの開発者とユースケースでは、__init__.py ファイルを含む通常のパッケージが推奨されるアプローチです。サブパッケージを含む複数のディレクトリ間で名前空間を共有する必要がある場合にのみ、名前空間パッケージを検討してください。

参照:

  • [PEP 420 - 暗黙的な名前空間パッケージ](https://www.python.org/dev/peps/pep-0420/)
  • [Python ドキュメント - 通常のパッケージ](https://docs.python.org/3/reference/ import.html#packages)
  • [Python ドキュメント - 名前空間パッケージ](https://docs.python.org/3/reference/import.html#namespace-packages)
  • [Python のインポート システムにおける不注意者の罠](https://www.python. org/doc/essays/import-traps/)

以上がPython 3.3 のパッケージには `__init__.py` ファイルが必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート