CodeGym /Kurse /Python SELF DE /Eigenes Paket erstellen

Eigenes Paket erstellen

Python SELF DE
Level 19 , Lektion 1
Verfügbar

2.1 Einführung in Pakete

Pakete sind eine Möglichkeit, Module innerhalb von Verzeichnissen zu strukturieren. Ein Paket ist ein Verzeichnis, das eine Datei __init__.py und ein oder mehrere Module enthält. Die Datei __init__.py kann leer sein oder Initialisierungscode für das Paket enthalten.

Beispiel für eine Paket-/Verzeichnisstruktur


mypackage/
    __init__.py
    module1.py
    module2.py
Inhalt der Datei __init__.py

# __init__.py
from .module1 import func1
from .module2 import func2
Inhalt der Datei module1.py

# module1.py
def func1():
    return "Function 1"
Inhalt der Datei module2.py

# module2.py
def func2():
    return "Function 2"

Beispielcode, der die Funktionen dieses Pakets verwendet:


import mypackage

print(mypackage.func1())  # Ausgabe: Function 1
print(mypackage.func2())  # Ausgabe: Function 2

Lass uns nun unser eigenes Paket schreiben und gleichzeitig herausfinden, wie andere funktionieren.

2.2 Erstellen eines eigenen Pakets Schritt für Schritt

Schritt 1: Erstellung der Paketstruktur

Der erste Schritt besteht darin, die Verzeichnisstruktur und Dateien für dein Paket zu erstellen. Als Beispiel werden wir ein Paket namens mypackage erstellen, das zwei Module enthält: module1.py und module2.py.

Beispiel für eine Paketstruktur:


mypackage/
    __init__.py
    module1.py
    module2.py

Beschreibung der Dateien:

  • __init__.py: Diese Datei kann leer sein oder Initialisierungscode für das Paket enthalten. Sie ist notwendig, damit Python das Verzeichnis als Paket betrachtet.
  • module1.py und module2.py: Diese Dateien enthalten Funktionen, Klassen und Variablen, die du in dein Paket aufnehmen möchtest.

Schritt 2: Schreiben des Codes für die Module

Schreiben wir einfachen Code für unsere Module.

module1.py


def func1():
    return "Function 1 from module1"

module2.py


def func2():
    return "Function 2 from module2"

__init__.py

Um die Funktionen aus unseren Modulen auf die Paketebene zu importieren, fügen wir sie in __init__.py hinzu.


from .module1 import func1
from .module2 import func2

Jetzt, wenn du das Paket importierst, sind die Funktionen func1 und func2 direkt verfügbar.

Schritt 3: Testen des Pakets

Erstelle eine Datei test.py im selben Verzeichnis, in dem sich das Verzeichnis mypackage befindet, und verwende das Paket in dieser Datei zum Testen.

test.py


import mypackage

print(mypackage.func1())  # Ausgabe: Function 1 from module1
print(mypackage.func2())  # Ausgabe: Function 2 from module2

Führe test.py aus, um sicherzustellen, dass dein Paket korrekt funktioniert.

2.3 Verwendung der Funktion dir()

Wenn du ein Modul oder Paket importierst, kannst du die Funktion dir() verwenden, um eine Liste aller verfügbaren Attribute und Methoden in diesem Modul zu erhalten. Dies ist besonders nützlich, wenn du mit einem neuen oder unbekannten Modul arbeitest und schnell herausfinden möchtest, welche Funktionen und Klassen es bereitstellt.

Beispiel: Erforschung des Standardmoduls math

Betrachten wir ein Beispiel für die Verwendung von dir() zur Erforschung des Standardmoduls math.


import math

print(dir(math))

Dieser Code importiert das Modul math und gibt eine Liste aller verfügbaren Attribute und Methoden aus. Das Ergebnis sieht ungefähr so aus:


['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Diese Liste umfasst alle Funktionen und Konstanten, die im Modul math definiert sind, wie sin, cos, tan, pi und andere.

Verwendung von dir() für benutzerdefinierte Module

Du kannst dir() auch für benutzerdefinierte (eigene) Module verwenden. Angenommen, du hast eine Datei mymodule.py mit folgendem Inhalt:


# mymodule.py
def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159

Du kannst dieses Modul importieren und dir() verwenden, um den Inhalt zu erforschen:


import mymodule

print(dir(mymodule))

Das Ergebnis wird wie folgt aussehen:


['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 
'greet', 'pi']

Die Liste umfasst 8 spezielle Attribute (mit Unterstrichen versehen) des Moduls mymodule, und am Ende sind deine Methode greet und die Variable pi aufgeführt.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION