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

バージョン 3.3 の Python パッケージには __init__.py が引き続き必要ですか?

Linda Hamilton
リリース: 2024-11-29 00:33:15
オリジナル
329 人が閲覧しました

Is `__init__.py` Still Required for Python Packages in Version 3.3 ?

Python の __init__.py ファイルはバージョン 3.3 のパッケージの必須要素ではなくなりました

質問

Python 3.3 では不要になりましたかパッケージに __init__.py ファイルを提供しますか?

解析

はじめに: __init__.py ファイルの役割

Python では、__init__.py ファイルの役割は、ディレクトリをパッケージとして使用すると、このディレクトリのさまざまなディレクトリとモジュールを名前空間に編成できます。 Python 2.7 以前では、パッケージを作成するには __init__.py ファイルが必要です。

Python 3.3 の __init__.py ファイル

Python 3.3 では、暗黙的な名前空間パッケージの概念が導入され、__init__.py がなくても可能になりました。も作成できます。これは、ディレクトリを名前空間パッケージとして指定できるようになり、そのディレクトリの内容をモジュール化できることを意味します。

名前空間パッケージの使用例

この暗黙的な名前空間パッケージ機能の最も一般的な使用例は、異なる場所にある複数のライブラリが親にサブパッケージを提供できるようにすることです。パッケージ 。たとえば、次の構造を提供する 2 つのライブラリ google_pubsub と google_storage があるとします。

google_pubsub/              # 包 1
    google/                 # 命名空间包(没有 __init__.py)
        cloud/              # 命名空间包(没有 __init__.py)
            pubsub/         # 常规包(有 __init__.py)
                __init__.py # 必需的,用于创建常规包
                foo.py

google_storage/             # 包 2
    google/                 # 命名空间包(没有 __init__.py)
        cloud/              # 命名空间包(没有 __init__.py)
            storage/        # 常规包(有 __init__.py)
                __init__.py # 必需的,用于创建常规包
                bar.py
ログイン後にコピー

この場合、google/ ディレクトリと google/cloud/ ディレクトリは名前空間パッケージである必要があるため、google_pubsub と google_storage google_storage パッケージは、同じ親パッケージの下のサブパッケージとみなされます。

結論:

  • Python パッケージには次の 2 種類があります。

    • 名前空間パッケージ (暗黙的パッケージ) ): __init__.py ファイルは必要ありません。複数のライブラリのコンテンツを親パッケージに提供するために使用されます。
    • 通常のパッケージ (明示的パッケージ): パッケージを識別するために __init__.py ファイルが必要で、現在のディレクトリの内容のみが含まれます。
  • ほとんどの場合、よりシンプルで理解しやすい通常のパッケージ (つまり、__init__.py ファイルを含むパッケージ) を使用することをお勧めします。
  • __init__.py ファイルは、名前空間パッケージを作成する必要がある特定の場合にのみ使用すべきではありません。

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

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