Konfigurieren der Datei __init__.py
Nachdem wir unsere Paketstruktur mit Modulen erstellt haben, ist es an der Zeit, die Datei __init__.py
zu konfigurieren, um unser Paket benutzerfreundlicher zu gestalten. Die Datei __init__.py
kann verwendet werden, um:
- Bestimmte Funktionen oder Klassen aus Modulen zu importieren
- Variablen auf Paketebene zu definieren
- Initialisierungsaufgaben auszuführen, wenn das Paket importiert wird
Funktionen auf Paketebene verfügbar machen
Konfigurieren wir unsere Datei __init__.py
, um bestimmte Funktionen direkt von der Paketebene aus verfügbar zu machen:
- Öffnen Sie die Datei
__init__.py
in der WebIDE und fügen Sie den folgenden Code hinzu:
## Import functions from modules
from .addition import add_two_numbers, add_multiple_numbers
from .multiplication import multiply_two_numbers, multiply_multiple_numbers
## Define package-level variables
__version__ = "0.1.0"
__author__ = "Your Name"
## Print a message when the package is imported
print(f"Calculator Package v{__version__} initialized")
Diese Konfiguration tut mehrere wichtige Dinge:
- Sie importiert bestimmte Funktionen aus unseren Modulen unter Verwendung relativer Imports (beachten Sie den Punkt vor dem Modulnamen)
- Sie definiert Variablen auf Paketebene
__version__
und __author__
- Sie gibt eine Meldung aus, wenn das Paket importiert wird
Der wichtigste Vorteil ist, dass Benutzer die Funktionen jetzt direkt aus dem Paket importieren können, ohne die interne Modulstruktur kennen zu müssen.
Testen des konfigurierten Pakets
Erstellen wir eine neue Testdatei, um die verbesserte Import-Erfahrung zu demonstrieren:
-
Erstellen Sie eine neue Datei namens test_configured_package.py
im Projektverzeichnis:
-
Fügen Sie der Datei den folgenden Code hinzu:
## Import functions directly from the package
from calculator_package import add_two_numbers, multiply_multiple_numbers
from calculator_package import __version__
## Display package version
print(f"Using Calculator Package version: {__version__}")
## Test addition function
result1 = add_two_numbers(10, 5)
print(f"10 + 5 = {result1}")
## Test multiplication function
result2 = multiply_multiple_numbers(2, 3, 4)
print(f"2 * 3 * 4 = {result2}")
- Führen Sie das Testskript aus:
python3 test_configured_package.py
Sie sollten die folgende Ausgabe sehen:
Calculator Package v0.1.0 initialized
Using Calculator Package version: 0.1.0
10 + 5 = 15
2 * 3 * 4 = 24
Beachten Sie, wie die Initialisierungsmeldung beim Import des Pakets ausgegeben wird und die Paketversion über die Variable __version__
zugänglich ist. Am wichtigsten ist, dass wir jetzt Funktionen direkt aus dem Paket importieren können, ohne die Module anzugeben, aus denen sie stammen.
Zusätzliche Techniken zur Paketorganisation
Für größere Projekte möchten Sie möglicherweise Ihr Paket mit Unterpaketen organisieren. Erstellen wir ein einfaches Unterpaket, um dies zu demonstrieren:
- Erstellen Sie ein Unterpaketverzeichnis für erweiterte Operationen:
mkdir calculator_package/advanced
- Erstellen Sie eine Datei
__init__.py
für das Unterpaket:
touch calculator_package/advanced/__init__.py
- Erstellen Sie ein Modul im Unterpaket:
touch calculator_package/advanced/scientific.py
- Öffnen Sie die Datei
scientific.py
in der WebIDE und fügen Sie den folgenden Code hinzu:
import math
def square_root(x):
"""Calculate the square root of a number."""
return math.sqrt(x)
def power(x, y):
"""Calculate x raised to the power of y."""
return math.pow(x, y)
- Konfigurieren Sie die Datei
__init__.py
des Unterpakets:
Öffnen Sie die Datei calculator_package/advanced/__init__.py
und fügen Sie Folgendes hinzu:
from .scientific import square_root, power
print("Advanced calculator functions loaded")
- Aktualisieren Sie die Datei
__init__.py
des Hauptpakets, um das Unterpaket einzubeziehen:
Fügen Sie diese Zeile am Ende von calculator_package/__init__.py
hinzu:
## Import the advanced subpackage
from . import advanced
- Testen Sie das Unterpaket:
Erstellen Sie eine neue Datei test_subpackage.py
im Projektverzeichnis:
from calculator_package.advanced import square_root, power
## Test square root
result1 = square_root(16)
print(f"Square root of 16 = {result1}")
## Test power
result2 = power(2, 3)
print(f"2 raised to the power of 3 = {result2}")
- Führen Sie den Test aus:
python3 test_subpackage.py
Sie sollten Folgendes sehen:
Calculator Package v0.1.0 initialized
Advanced calculator functions loaded
Square root of 16 = 4.0
2 raised to the power of 3 = 8.0
Dies zeigt, wie Sie Unterpakete verwenden können, um komplexere Python-Pakete zu organisieren.