Course
Mit Modulen in Python arbeiten
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
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
Anweisungfrom .. 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-VariablePATH
) -
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.
Python-Kurse
Course
Einführung in die Datenwissenschaft in Python
Course