Heim >Backend-Entwicklung >Python-Tutorial >Ist „__init__.py' für Python-Pakete in Version 3.3 weiterhin erforderlich?

Ist „__init__.py' für Python-Pakete in Version 3.3 weiterhin erforderlich?

Linda Hamilton
Linda HamiltonOriginal
2024-11-29 00:33:15400Durchsuche

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

Pythons __init__.py-Datei ist in Version 3.3 kein erforderliches Element des Pakets mehr.

Frage

Ist sie in Python 3.3 nicht mehr erforderlich? ? Datei __init__.py für Paket bereitstellen?

Parsing

Einführung: Die Rolle der Datei __init__.py

In Python besteht die Rolle der Datei __init__.py darin, a zu identifizieren Verzeichnis als Paket Ermöglicht die Organisation der verschiedenen Verzeichnisse und Module dieses Verzeichnisses in einem Namensraum. In Python 2.7 und früher ist die Datei __init__.py zum Erstellen eines Pakets erforderlich.

__init__.py-Datei in Python 3.3

In Python 3.3 wurde das Konzept impliziter Namespace-Pakete eingeführt, was es auch ohne __init__.py-Dateien und -Pakete möglich macht können ebenfalls erstellt werden. Dies bedeutet, dass ein Verzeichnis nun als Namespace-Paket bezeichnet und der Inhalt dieses Verzeichnisses modularisiert werden kann.

Anwendungsfälle für Namespace-Pakete

Der häufigste Anwendungsfall für diese implizite Namespace-Paketfunktion besteht darin, mehreren Bibliotheken von verschiedenen Standorten aus zu ermöglichen, Unterpakete zu einem übergeordneten Paket beizutragen Paket . Angenommen, es gibt zwei Bibliotheken, google_pubsub und google_storage, die die folgende Struktur bereitstellen:

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

In diesem Fall müssen die Verzeichnisse google/ und google/cloud/ Namespace-Pakete sein, sodass google_pubsub und The Das Paket „google_storage“ wird als Unterpaket desselben übergeordneten Pakets betrachtet.

Fazit:

  • Es gibt die folgenden zwei Arten von Python-Paketen:

    • Namespace-Paket (implizites Paket). ): Es ist keine __init__.py-Datei erforderlich, die verwendet wird, um den Inhalt mehrerer Bibliotheken zu einem übergeordneten Paket beizutragen.
    • Reguläre Pakete (explizite Pakete): Erfordert eine __init__.py-Datei zur Identifizierung des Pakets und enthält nur den Inhalt des aktuellen Verzeichnisses.
  • In den meisten Fällen wird immer noch empfohlen, reguläre Pakete (d. h. Pakete mit __init__.py-Dateien) zu verwenden, da diese einfacher und leichter zu verstehen sind.
  • Die Datei __init__.py sollte nicht nur in bestimmten Fällen verwendet werden, in denen Namespace-Pakete erstellt werden müssen.

Das obige ist der detaillierte Inhalt vonIst „__init__.py' für Python-Pakete in Version 3.3 weiterhin erforderlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn