Direkt zum Inhalt
HeimAnleitungenPython

Mit Modulen in Python arbeiten

Mit Modulen kannst du Teile deines Programms in verschiedene Dateien aufteilen, um die Wartung zu erleichtern und die Leistung zu verbessern.
Aktualisierte 11. Sept. 2024  · 8 Min. lesen

Als Anfänger fängst du an, mit Python auf dem Interpreter zu arbeiten. Später, wenn du längere Programme schreiben musst, fängst du an, Skripte zu schreiben. Wenn dein Programm größer wird, möchtest du es vielleicht in mehrere Dateien aufteilen, um die Wartung zu erleichtern und den Code wiederverwenden zu können. Die Lösung für dieses Problem sind Module. Du kannst deine meistgenutzten Funktionen in einem Modul definieren und es importieren, anstatt ihre Definitionen in verschiedene Programme zu kopieren. Ein Modul kann von einem anderen Programm importiert werden, um seine Funktionen zu nutzen. So kannst du auch die Python-Standardbibliothek nutzen.

Einfach gesagt, ist ein Modul eine Datei, die aus Python-Code besteht. Er kann Funktionen, Klassen und Variablen definieren und kann auch ausführbaren Code enthalten. Jede Python-Datei kann als Modul referenziert werden. Eine Datei, die Python-Code enthält, zum Beispiel: test.py wird als Modul bezeichnet, und ihr Name wäre test.

Es gibt verschiedene Methoden, um Module zu schreiben, aber der einfachste Weg ist, eine Datei mit der Erweiterung .py zu erstellen, die Funktionen und Variablen enthält.

Bevor du anfängst, deine eigenen Module zu schreiben, empfehle ich dir, einen Blick auf unseren Kurs "Einführung in Python für Data Science" zu werfen, in dem die Grundlagen der Programmiersprache Python behandelt werden.

Python von Grund auf lernen

Beherrsche Python für Data Science und erwerbe gefragte Fähigkeiten.
Kostenloses Lernen Beginnen

Das Importmodul in Python

Um die Funktionen eines Moduls zu nutzen, musst du es in dein aktuelles Programm importieren. Du musst das Schlüsselwort import zusammen mit dem gewünschten Modulnamen verwenden. Wenn der Interpreter auf eine import Anweisung stößt, importiert er das Modul in dein aktuelles Programm. Du kannst die Funktionen innerhalb eines Moduls verwenden, indem du einen Punkt (.) zusammen mit dem Modulnamen verwendest. Zuerst schauen wir uns an, wie man die Module der Standardbibliothek verwendet. Im folgenden Beispiel wird das Modul math in das Programm importiert, damit du die Funktion sqrt() verwenden kannst.

import math             #You need to put this command,`import` keyword along with the name of the module you want to import
num = 4
print(math.sqrt(num))   #Use dot operator to access sqrt() inside module "math"

Aus Gründen der Effizienz wird jedes Modul nur einmal pro Interpretersitzung importiert. Wenn du also deine Module änderst, musst du den Interpreter neu starten. Wenn du nur ein Modul interaktiv testen willst, verwende reload(), zum Beispiel: reload(module_name).

Module in Python schreiben

Nachdem du nun gelernt hast, wie du ein Modul in dein Programm importieren kannst, ist es an der Zeit, dein eigenes zu schreiben und es in einem anderen Programm zu verwenden. Das Schreiben eines Moduls ist genau wie das Schreiben jeder anderen Python-Datei. Beginnen wir damit, eine Funktion zum Addieren/Subtrahieren zweier Zahlen in einer Datei calculation.py zu schreiben.

def add(x,y):
    return (x+y)
def sub(x,y):
    return (x-y)

Wenn du versuchst, dieses Skript auf der Kommandozeile auszuführen, wird nichts passieren, weil du das Programm nicht angewiesen hast, etwas zu tun. Erstelle ein weiteres Python-Skript im selben Verzeichnis mit dem Namen module_test.py und schreibe den folgenden Code hinein.

import calculation            #Importing calculation module
print(calculation.add(1,2))   #Calling function defined in add module.

Wenn du module_test.py ausführst, siehst du "3" als Ausgabe. Als der Interpreter auf die Anweisung import gestoßen ist, hat er das Modul calculation in deinen Code importiert und mit dem Punktoperator konntest du dann auf die Funktion add() zugreifen.

Weitere Möglichkeiten, Module in Python zu importieren

Es gibt noch mehr Möglichkeiten, Module zu importieren:

  • from .. import Anweisung
  • from .. import * Anweisung
  • Umbenennung des importierten Moduls

from ... import statement

Die Anweisung from..import ermöglicht es dir, bestimmte Funktionen/Variablen aus einem Modul zu importieren, anstatt alles zu importieren. Im vorherigen Beispiel wurden beim Import von calculation in module_test.py sowohl die Funktionen add() als auch sub() importiert. Aber was, wenn du nur die Funktion add() in deinem Code brauchst? Hier ist ein Beispiel, um die Verwendung von from..import zu veranschaulichen.

from calculation import add
print(add(1,2))

Im obigen Beispiel wird nur die Funktion add() importiert und verwendet. Hast du die Verwendung von add() bemerkt? Du kannst jetzt direkt darauf zugreifen, ohne den Modulnamen zu verwenden. Du kannst auch mehrere Attribute importieren, indem du sie in der Importanweisung durch ein Komma trennst. Sieh dir das folgende Beispiel an:

from calculation import add,sub

from ... import * Anweisung

Mit dieser Anweisung kannst du alle Attribute eines Moduls importieren. Dadurch werden alle Attribute des importierten Moduls in deinem Code sichtbar.

Hier ist ein Beispiel, um die Verwendung von from .. import * zu veranschaulichen:

from calculation import *
print(add(1,2))
print(sub(3,2))

Beachte, dass du in der Berufswelt die Verwendung von from..import und from..import* vermeiden solltest, da sie deinen Code weniger lesbar macht.

Umbenennen des importierten Moduls in Python

Du kannst das Modul, das du importierst, umbenennen. Das kann nützlich sein, wenn du dem Modul einen aussagekräftigeren Namen geben willst oder der Modulname zu groß ist, um ihn wiederholt zu verwenden. Du kannst das Schlüsselwort as verwenden, um es umzubenennen. Das folgende Beispiel erklärt, wie du sie in deinem Programm verwenden kannst.

import calculation as cal
print(cal.add(1,2))

Du hast dir etwas Tipparbeit erspart, indem du calculation in cal umbenannt hast.

Beachte, dass du jetzt nicht mehr calculation.add(1,2) verwenden kannst, da calculation in deinem Programm nicht mehr erkannt wird.

Modul-Suchpfad in Python

Es kann sein, dass du deine Module in verschiedenen Programmen oder Projekten brauchst und dass sie sich in unterschiedlichen Verzeichnissen befinden. Wenn du ein Modul verwenden willst, das in einem anderen Verzeichnis liegt, hast du einige Möglichkeiten, die dir Python bietet.

Wenn du ein Modul mit dem Namen calculation importierst, sucht der Interpreter zunächst nach einem eingebauten Modul mit diesem Namen. Wenn sie nicht gefunden wird, sucht sie nach einer Datei mit dem Namen calculation.py in einer Liste von Verzeichnissen, die durch die Variable sys.path angegeben wird. sys.path enthält diese Orte:

  • Das Verzeichnis, das das Eingabeskript enthält (oder das aktuelle Verzeichnis)

  • PYTHONPATH (eine Liste von Verzeichnisnamen mit der gleichen Syntax wie die Shell-Variable PATH)

  • Der installationsabhängige Standard

Angenommen, module_test.py liegt im Verzeichnis /home/datacamp/ und du hast calculation.py nach /home/test/ verschoben. Du kannst sys.path so ändern, dass /home/test/ in die Liste der Pfade aufgenommen wird, in denen der Python-Interpreter nach dem Modul suchen wird. Dazu musst du module_test.py wie folgt ändern:

import sys
sys.path.append('/home/test/')

import calculation
print(calculation.add(1,2))

Byte-kompilierte Dateien in Python

Der Import eines Moduls erhöht die Ausführungszeit von Programmen. Deshalb gibt es in Python einige Tricks, um sie zu beschleunigen. Eine Möglichkeit ist, bytekompilierte Dateien mit der Erweiterung .pyc zu erstellen.

Intern wandelt Python den Quellcode in eine Zwischenform namens Bytecode um. Er übersetzt sie dann in die Muttersprache deines Computers und führt sie aus. Diese .pyc Datei ist nützlich, wenn du das Modul das nächste Mal aus einem anderen Programm importierst - es wird viel schneller gehen, da ein Teil der Verarbeitung, die für den Import eines Moduls erforderlich ist, bereits erledigt ist. Außerdem sind diese bytekompilierten Dateien plattformunabhängig.

Beachte, dass diese .pyc Dateien normalerweise im gleichen Verzeichnis wie die entsprechenden .py Dateien erstellt werden. Wenn Python keine Berechtigung hat, auf Dateien in diesem Verzeichnis zu schreiben, werden die .pyc Dateien nicht erstellt.

The Python dir() Function

Die Funktion dir() wird verwendet, um alle in einem Modul definierten Namen herauszufinden. Sie gibt eine sortierte Liste von Strings mit den Namen zurück, die in einem Modul definiert sind.

import calculation
print(test.add(1,2))
print(dir(calculation))

Output:

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'sub']

In der Ausgabe kannst du die Namen der Funktionen sehen, die du im Modul add & sub definiert hast. Das Attribut __name__ enthält den Namen des Moduls. Alle Attribute, die mit einem Unterstrich beginnen, sind Standard-Python-Attribute, die mit einem Modul verbunden sind.

Fazit

Die Erstellung eines Moduls ist erforderlich, um den Code besser verwalten und wiederverwenden zu können. Python stellt dir einige eingebaute Module zur Verfügung, die du mit dem Schlüsselwort import importieren kannst. Mit Python kannst du auch deine eigenen Module erstellen und sie in deinen Programmen verwenden. Es bietet dir bytekompilierte Dateien, um die Kosten für die Verwendung von Modulen zu umgehen, was die Ausführung schneller macht. Du kannst dir() verwenden, um die Attribute zu kennen, die in dem Modul definiert sind, das in einem Programm verwendet wird. Dies kann sowohl für vordefinierte Module als auch für benutzerdefinierte Module verwendet werden.

Wenn du mehr über Python erfahren möchtest, kannst du dir unseren Kurs Intermediate Python for Data Science ansehen.

Themen

Python-Kurse

Zertifizierung verfügbar

Course

Einführung in Python

4 hr
5.5M
Beherrsche die Grundlagen der Datenanalyse mit Python in nur vier Stunden. Dieser Online-Kurs führt in die Python-Schnittstelle ein und stellt beliebte Pakete vor.
See DetailsRight Arrow
Start Course
Mehr anzeigenRight Arrow