Heim >Backend-Entwicklung >Python-Tutorial >Benötige ich „__init__.py'-Dateien für Pakete in Python 3.3?
Frage:
Ist in Python 3.3 noch ein __init__ erforderlich? py-Datei beim Importieren Pakete?
Antwort:
Nicht unbedingt. Mit Python 3.3 wurde das Konzept der „impliziten Namespace-Pakete“ eingeführt, das die Erstellung von Paketen ohne eine __init__.py-Datei ermöglicht. Diese werden als Namespace-Pakete bezeichnet, im Gegensatz zu regulären Paketen, die über eine __init__.py-Datei verfügen.
Impliziter Namespace-Paket-Anwendungsfall:
Namespace-Pakete werden speziell verwendet wenn sich mehrere Bibliotheken an verschiedenen Standorten befinden und ein Unterpaket zum selben übergeordneten Paket beitragen müssen. Betrachten Sie beispielsweise die folgende Struktur:
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
Ohne Namespace-Pakete würde der Import von „google_pubsub“ und „google_storage“ fehlschlagen, da Python reguläre Pakete als eigenständige Entitäten behandelt. Durch das Entfernen der __init__.py-Dateien aus den Verzeichnissen „google“ und „google/cloud“ werden sie als Namespace-Pakete interpretiert, sodass der Python-Interpreter Module und Unterpakete finden und zum „google“-Paket beitragen kann.
Reguläre vs. Namespace-Pakete:
In den meisten Fällen wird empfohlen, bei regulären Paketen zu bleiben und leere Pakete zu verwenden __init__.py-Dateien. Dies liegt daran, dass:
Fazit:
Während Namespace-Pakete in bestimmten Szenarien nützlich sein können, sollten sie sparsam verwendet werden. Für die meisten Entwickler und Anwendungsfälle sind reguläre Pakete mit __init__.py-Dateien der empfohlene Ansatz. Berücksichtigen Sie Namespace-Pakete nur, wenn ein echter Bedarf besteht, Namespaces zwischen mehreren Verzeichnissen mit Unterpaketen gemeinsam zu nutzen.
Referenzen:
Das obige ist der detaillierte Inhalt vonBenötige ich „__init__.py'-Dateien für Pakete in Python 3.3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!