CodeGym /Kurse /Python SELF DE /Import von Modulen

Import von Modulen

Python SELF DE
Level 19 , Lektion 0
Verfügbar

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:

  1. Aktuelles Verzeichnis: Python sucht zuerst im aktuellen Verzeichnis, von dem der Skript gestartet wurde.
  2. Umgebungsvariable PYTHONPATH: Wenn das Modul im aktuellen Verzeichnis nicht gefunden wird, sucht Python in den in der Umgebungsvariable PYTHONPATH angegebenen Verzeichnissen.
  3. 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.

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