Wie man Module in Python 3 schreibt
Einführung
Python Module sind .py Dateien, die aus Python-Code bestehen. Jede Python-Datei kann als Modul referenziert werden.
Einige Module sind über die Python-Standardbibliothek verfügbar und sind daher mit Ihrer Python-Installation installiert. Andere können mit dem Python-Paketmanager pip installiert werden. Darüber hinaus können Sie Ihre eigenen Python-Module erstellen, da Module aus Python-.py-Dateien bestehen.
Dieses Tutorial wird Sie durch das Schreiben von Python-Modulen führen, die innerhalb anderer Programmdateien verwendet werden können.
Voraussetzungen
Sie sollten Python 3 installiert und eine Programmierumgebung auf Ihrem Computer oder Server eingerichtet haben. Wenn Sie keine Programmierumgebung eingerichtet haben, können Sie auf die Installations- und Einrichtungsanleitungen für eine lokale Programmierumgebung oder für eine Programmierumgebung auf Ihrem Server verweisen, die für Ihr Betriebssystem (Ubuntu, CentOS, Debian usw.) geeignet ist.
Schreiben und Importieren von Modulen
Ein Modul zu schreiben ist wie jede andere Python-Datei zu schreiben. Module können Definitionen von Funktionen, Klassen und Variablen enthalten, die dann in anderen Python-Programmen verwendet werden können.
Info: Um dem Beispielcode in diesem Tutorial zu folgen, öffnen Sie eine Python-interaktive Shell auf Ihrem lokalen System, indem Sie den Befehl python3 ausführen. Dann können Sie die Beispiele kopieren, einfügen oder bearbeiten, indem Sie sie nach der >>> Eingabeaufforderung hinzufügen.
Von unserer lokalen Python 3-Programmierumgebung oder serverbasierten Programmierumgebung aus, lassen Sie uns damit beginnen, eine Datei hello.py zu erstellen, die wir später in eine andere Datei importieren werden.
Zunächst erstellen wir eine Funktion, die Hello, World! ausgibt:
Define a function
def world():
print("Hello, World!")
Wenn wir das Programm in der Befehlszeile mit python hello.py ausführen, wird nichts passieren, da wir dem Programm nicht gesagt haben, was es tun soll.
Lass uns eine zweite Datei im selben Verzeichnis mit dem Namen main_program.py erstellen, damit wir das Modul importieren können, das wir gerade erstellt haben, und dann die Funktion aufrufen. Diese Datei muss im selben Verzeichnis sein, damit Python weiß, wo es das Modul finden kann, da es sich nicht um ein integriertes Modul handelt.
Import hello module
import hello
Call function
hello.world()
Da wir ein Modul importieren, müssen wir die Funktion aufrufen, indem wir den Modulnamen in Punktnotation referenzieren.
Wir könnten stattdessen das Modul als from hello import world importieren und die Funktion direkt als world() aufrufen. Sie können mehr über diese Methode erfahren, indem Sie lesen, wie man from … import beim Importieren von Modulen verwendet.
Jetzt können wir das Programm in der Kommandozeile ausführen:
- python main_program.py
Wenn wir das tun, erhalten wir die folgende Ausgabe:
Hello, World!
Um zu sehen, wie wir Variablen in einem Modul verwenden können, lassen Sie uns eine Variablendefinition in unserer hello.py Datei hinzufügen:
Define a function
def world():
print("Hello, World!")
Define a variable
shark = "Sammy"
Als Nächstes rufen wir die Variable in einer print()-Funktion innerhalb unserer main_program.py-Datei auf:
Import hello module
import hello
Call function
hello.world()
Print variable
print(hello.shark)
Sobald wir das Programm erneut ausführen, erhalten wir die folgende Ausgabe:
Hello, World!
Sammy
Schließlich lassen Sie uns auch eine Klasse in der hello.py-Datei definieren. Wir werden die Klasse Octopus mit den Attributen name und color erstellen und eine Funktion, die die Attribute beim Aufruf ausgibt.
Define a function
def world():
print("Hello, World!")
Define a variable
shark = "Sammy"
Define a class
class Octopus:
def __init__(self, name, color):
self.color = color
self.name = name
def tell_me_about_the_octopus(self):
print("This octopus is " + self.color + ".")
print(self.name + " is the octopus's name.")
Wir werden jetzt die Klasse ans Ende unserer main_program.py Datei hinzufügen:
Import hello module
import hello
Call function
hello.world()
Print variable
print(hello.shark)
Call class
jesse = hello.Octopus("Jesse", "orange")
jesse.tell_me_about_the_octopus()
Sobald wir die Octopus-Klasse mit hello.Octopus() aufgerufen haben, können wir auf die Funktionen und Attribute der Klasse im Namensraum der Datei main_program.py zugreifen. Dadurch können wir zum Beispiel auf der letzten Zeile jesse.tell_me_about_the_octopus() schreiben, ohne hello aufzurufen. Wir könnten auch beispielsweise eines der Attribute der Klasse wie jesse.color aufrufen, ohne den Namen des hello-Moduls zu erwähnen.
Wenn wir das Programm ausführen, erhalten wir die folgende Ausgabe:
Hello, World!
Sammy
This octopus is orange.
Jesse is the octopus's name.
Es ist wichtig zu beachten, dass Module zwar oft Definitionen sind, sie aber auch Code implementieren können. Um zu sehen, wie dies funktioniert, lassen Sie uns unsere hello.py Datei umschreiben, sodass sie die Funktion world() implementiert:
Define a function
def world():
print("Hello, World!")
Call function within module
world()
Wir haben auch die anderen Definitionen in der Datei gelöscht.
Jetzt werden wir in unserer main_program.py Datei jede Zeile außer der Import-Anweisung löschen:
Import hello module
import hello
Wenn wir main_program.py ausführen, erhalten wir die folgende Ausgabe:
Hello, World!
Dies liegt daran, dass das hello Modul die world() Funktion implementiert hat, die dann an main_program.py übergeben wird und ausgeführt wird, wenn main_program.py gestartet wird.
Ein Modul ist eine Python-Programmdaten-Datei, die aus Definitionen oder Code besteht, die Sie in anderen Python-Programmdaten-Dateien nutzen können.
Zugriff auf Module aus einem anderen Verzeichnis
Module können für mehr als ein Programmierprojekt nützlich sein, und in diesem Fall macht es weniger Sinn, ein Modul in einem bestimmten Verzeichnis zu belassen, das an ein spezifisches Projekt gebunden ist.
Wenn Sie ein Python-Modul von einem anderen Ort als dem gleichen Verzeichnis verwenden möchten, in dem sich Ihr Hauptprogramm befindet, haben Sie einige Optionen.
Pfade anfügen
Eine Möglichkeit besteht darin, den Pfad des Moduls über die Programmdateien, die dieses Modul verwenden, aufzurufen. Dies sollte eher als vorübergehende Lösung betrachtet werden, die während des Entwicklungsprozesses durchgeführt werden kann, da das Modul nicht systemweit verfügbar gemacht wird.
Um den Pfad eines Moduls an eine andere Programmiersprache-Datei anzuhängen, beginnen Sie damit, das sys-Modul sowie alle anderen Module, die Sie in Ihrer Hauptprogrammdaten-Datei verwenden möchten, zu importieren.
Das sys-Modul ist Teil der Python Standardbibliothek und bietet system-spezifische Parameter und Funktionen, die Sie in Ihrem Programm verwenden können, um den Pfad des Moduls festzulegen, das Sie implementieren möchten.
Zum Beispiel, nehmen wir an, dass wir die hello.py Datei verschoben haben und sie sich jetzt im Verzeichnis /usr/sammy/ befindet, während die main_program.py Datei in einem anderen Verzeichnis ist.
In unserer main_program.py Datei können wir das hello Modul weiterhin importieren, indem wir das sys Modul importieren und dann /usr/sammy/ zu dem Pfad hinzufügen, den Python für Dateien überprüft.
import sys
sys.path.append('/usr/sammy/')
import hello
...
Solange Sie den Pfad zur hello.py-Datei korrekt festlegen, können Sie die main_program.py-Datei ohne Fehlermeldungen ausführen und erhalten die gleiche Ausgabe wie oben, als sich hello.py im selben Verzeichnis befand.
Das Modul zum Python-Pfad hinzufügen
Eine zweite Möglichkeit, die Sie haben, besteht darin, das Modul zu dem Pfad hinzuzufügen, den Python zur Überprüfung von Modulen und Paketen verwendet. Dies ist eine dauerhaftere Lösung, die das Modul umgebungs- oder systemweit verfügbar macht, wodurch diese Methode tragbarer wird.
Um herauszufinden, welchen Pfad Python überprüft, führen Sie den Python-Interpreter aus Ihrer Programmierumgebung aus:
- python3
Als nächstes importieren Sie das sys Modul:
- import sys
Lass Python dann den Systempfad ausgeben:
- print(sys.path)
Hier erhalten Sie eine Ausgabe mit zumindest einem Systempfad. Wenn Sie sich in einer Programmierumgebung befinden, können Sie mehrere erhalten. Sie sollten nach demjenigen suchen, der in der Umgebung ist, die Sie gerade verwenden, aber Sie möchten möglicherweise auch das Modul zu Ihrem Haupt-Python-Systempfad hinzufügen. Was Sie suchen, wird ähnlich aussehen wie das hier:
'/usr/sammy/my_env/lib/python3.5/site-packages'
Jetzt können Sie Ihre hello.py Datei in dieses Verzeichnis verschieben. Sobald das erledigt ist, können Sie das hello Modul wie gewohnt importieren:
import hello
...
Wenn Sie Ihr Programm ausführen, sollte es ohne Fehler abgeschlossen werden.
Die Anpassung des Pfades Ihres Moduls kann sicherstellen, dass Sie auf das Modul zugreifen können, unabhängig davon, in welchem Verzeichnis Sie sich befinden. Dies ist besonders nützlich, wenn Sie mehr als ein Projekt haben, das auf ein bestimmtes Modul verweist.
Schlussfolgerung
Das Schreiben eines Python-Moduls ist dasselbe wie das Schreiben einer beliebigen anderen Python .py-Datei. Dieses Tutorial behandelte, wie man Definitionen innerhalb eines Moduls schreibt, diese Definitionen in einer anderen Python-Programmiersdatei verwendet und welche Optionen es gibt, wo das Modul aufbewahrt werden kann, um darauf zuzugreifen.
Sie können mehr über die Installation und den Import von Modulen erfahren, indem Sie lesen, wie man Module in Python 3 importiert.