ホームページ >バックエンド開発 >Python チュートリアル >Python 3.3 ではパッケージ内の __init__.py が不要になりますか?

Python 3.3 ではパッケージ内の __init__.py が不要になりますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-29 06:54:09384ブラウズ

Does Python 3.3  Eliminate the Need for __init__.py in Packages?

Python 3.3 のパッケージには __init__.py は必要ありません ?

Python 3.3 以降のバージョンでは、名前空間パッケージ。この機能を使用すると、__init__.py ファイルなしでパッケージを作成できます。

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

  • 名前空間パッケージ: __init__.py ファイルがないため、複数のモジュールが同じパッケージに貢献できます
  • 通常のパッケージ: __init__.py ファイルを使用して自己完結型にし、モジュールを単一のディレクトリ階層に分離します。

名前空間を使用する場合パッケージ

名前空間パッケージの主な使用例は、複数のライブラリが異なる場所に存在し、それらのライブラリが親パッケージにサブパッケージを提供するようにする場合です。

例:

google_pubsub/ <- パッケージ1

google/                 <- Namespace package (no __init__.py)
    cloud/              <- Namespace package (no __init__.py)
        pubsub/         <- Regular package (with __init__.py)
            __init__.py <- Required to make the package a regular package
            foo.py
google_storage/ <- パッケージ 2

google/                 <- Namespace package (no __init__.py)
    cloud/              <- Namespace package (no __init__.py)
        storage/        <- Regular package (with __init__.py)
            __init__.py <- Required to make the package a regular package
            bar.py

この例では、google_pubsub と google_storage の両方が同じ google/cloud 名前空間を共有します。これにより、完全なパスを指定しなくても、いずれかのライブラリからモジュールをインポートできます。

通常パッケージ

ほとんどの使用例では、__init__.py ファイルを使用して通常のパッケージを作成します。依然として推奨されるアプローチです。これにより、自己完結型が提供され、潜在的な名前空間の競合が防止されます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。