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 |
|---|
|
Inhalt der Datei module1.py |
|---|
|
Inhalt der Datei module2.py |
|---|
|
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.pyundmodule2.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.
GO TO FULL VERSION