1.1 Einführung in Module
Ein Modul in Python ist eine Datei mit der Erweiterung .py, die Code enthält. Module ermöglichen es, großen Code in kleinere, verwaltbare Teile zu zerlegen. Jedes Modul kann Funktionen, Klassen und Variablen enthalten sowie beim Importieren bestimmten Code ausführen.
Beispiel eines einfachen Moduls
Erstellen wir das Modul mymodule.py
:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
pi = 3.14159
Jetzt kann dieses Modul in einer anderen Datei importiert und verwendet werden.
1.2 Import von Modulen
Python bietet mehrere Möglichkeiten, Module zu importieren. Schauen wir uns diese der Reihe nach an.
Import des gesamten Moduls
Die allgemeine Syntax für diese Operation sieht so aus:
import modul
Diese Methode importiert das gesamte Modul, und du kannst seine Funktionen und Variablen verwenden, indem du den Namen des Moduls angibst.
import modul
print(modul.greet("Alice")) # Ausgabe: Hello, Alice!
print(modul.pi) # Ausgabe: 3.14159
Das haben wir schon einmal mit dem Modul math
gemacht, erinnerst du dich?
import math
print(math.ceil(13 / 7)) # aufrunden
print(math.floor(13 / 7)) # abrunden
Import bestimmter Elemente aus einem Modul
Du kannst auch nur bestimmte Elemente aus einem Modul importieren. Die allgemeine Syntax für diese Operation sieht so aus:
from modul import func, var
Diese Methode importiert nur bestimmte Funktionen, Klassen oder Variablen aus dem Modul, sodass du sie verwenden kannst, ohne den Modulnamen anzugeben.
from mymodule import greet, pi
print(greet("Bob")) # Ausgabe: Hello, Bob!
print(pi) # Ausgabe: 3.14159
Import eines Moduls mit einem Alias
Die allgemeine Syntax für diese Operation sieht so aus:
import modul as alias
Diese Methode erlaubt es, ein Modul zu importieren und ihm einen anderen Namen zu geben, was nützlich sein kann, um lange Modulnamen zu kürzen oder Namenskonflikte zu lösen.
import mymodule as mm
print(mm.greet("Charlie")) # Ausgabe: Hello, Charlie!
print(mm.pi) # Ausgabe: 3.14159
Import aller Elemente aus einem Modul
Die allgemeine Syntax für diese Operation sieht so aus:
from modul import *
Diese Methode importiert alle Funktionen, Klassen und Variablen aus dem Modul, sodass du sie verwenden kannst, ohne den Modulnamen anzugeben. Allerdings wird die Verwendung dieser Methode nicht empfohlen, da sie Namenskonflikte verursachen und den Code schwer lesbar machen kann.
from mymodule import *
print(greet("Dave")) # Ausgabe: Hello, Dave!
print(pi) # Ausgabe: 3.14159
1.3 Unter der Haube des Importprozesses
Reihenfolge der Modulsuche
Wenn du ein Modul importierst, sucht Python es in einer bestimmten Reihenfolge:
- Aktuelles Verzeichnis: Python sucht zuerst im aktuellen Verzeichnis, von dem der Skript gestartet wurde.
-
Umgebungsvariable
PYTHONPATH
: Wenn das Modul im aktuellen Verzeichnis nicht gefunden wird, sucht Python in den in der UmgebungsvariablePYTHONPATH
angegebenen Verzeichnissen. -
Standardverzeichnisse: Wenn das Modul immer noch nicht gefunden wird, sucht Python in den Standardverzeichnissen, wie den in
sys.path
angegebenen Verzeichnissen.
Beispiel:
import sys
for path in sys.path:
print(path)
Lokaler und globaler Import
Module können sowohl global (am Anfang der Datei) als auch lokal (innerhalb einer Funktion oder Methode) importiert werden.
Globaler Import
Ein globaler Import erfolgt am Anfang der Datei und macht das importierte Modul im gesamten Datei verfügbar.
import math
def calculate_circle_area(radius):
return math.pi * radius ** 2
Lokaler Import
Ein lokaler Import erfolgt innerhalb einer Funktion oder Methode und macht das importierte Modul nur in dieser Funktion oder Methode verfügbar.
def calculate_square_root(x):
import math
return math.sqrt(x)
print(calculate_square_root(16))
Ein lokaler Import kann nützlich sein, um die Ladezeit des Moduls zu verkürzen oder Namenskonflikte zu vermeiden.
1.4 Dynamischer Import
Dynamischer Import ermöglicht es, Module während der Ausführung des Programms zu importieren. Dies kann nützlich sein, wenn Module basierend auf Benutzereingaben oder anderen dynamischen Bedingungen importiert werden müssen.
Die allgemeine Syntax für diese Operation sieht so aus:
module = __import__("modul")
Lass uns zum Beispiel das Modul math
auf diese Weise importieren.
module_name = "math"
module = __import__(module_name)
print(module.sqrt(16)) # Ausgabe: 4.0
Die weitere Arbeit mit dem Code ähnelt der Verwendung von import as
, wenn dem Modul math
das Alias module
zugewiesen wird.
1.5 Zugriff auf Modulattribute mit der Funktion getattr
Die Funktion getattr
ermöglicht es, Attribute dynamisch aus einem Modul (oder jedem Objekt) abzurufen. Sie kann nützlich sein, wenn Attributnamen im Voraus unbekannt oder während der Programmausführung änderbar sind.
Syntax der Funktion getattr
:
getattr(object, name, default = None)
Dabei ist object
das Objekt, aus dem das Attribut abgerufen werden soll, name
ist ein Zeichenfolge, die den Namen des Attributs enthält, und default
ist der Wert, der zurückgegeben wird, wenn das Attribut mit dem angegebenen Namen nicht existiert. Der Standardwert für den Parameter default
ist None
.
Beispiel für die Verwendung der Funktion getattr
:
import math
# Abrufen des Attributs sqrt aus dem Modul math
sqrt_function = getattr(math, 'sqrt')
print(sqrt_function(25)) # Ausgabe: 5.0
# Versuch, ein nicht vorhandenes Attribut abzurufen, Rückgabe des Standardwerts
non_existent_attr = getattr(math, 'non_existent', 'default_value')
print(non_existent_attr) # Ausgabe: default_value
In diesem Beispiel verwenden wir die Funktion getattr
, um die Funktion sqrt
aus dem Modul math
abzurufen, und rufen dann diese Funktion auf, um die Quadratwurzel der Zahl 25 zu berechnen. Wenn das Attribut mit dem angegebenen Namen nicht existiert, wird der Standardwert default_value
zurückgegeben.
GO TO FULL VERSION