So schreiben Sie Module in Python 3

Einführung

Pythonmodules sind.py Dateien, die aus Python-Code bestehen. Jede Python-Datei kann als Modul referenziert werden.

Einige Module sind überPython Standard Libraryverfügbar und werden daher mit Ihrer Python-Installation installiert. Andere könneninstalled mit Pythons Paketmanagerpip sein. Darüber hinaus können Sie Ihre eigenen Python-Module erstellen, da die Module aus Python.py-Dateien bestehen.

Dieses Tutorial führt Sie durch das Schreiben von Python-Modulen zur Verwendung in anderen Programmierdateien.

Module schreiben und importieren

Das Schreiben eines Moduls ähnelt dem Schreiben einer anderen Python-Datei. Module können Definitionen von Funktionen, Klassen und Variablen enthalten, die dann in anderen Python-Programmen verwendet werden können.

Beginnen wir damit, aus unseren Python 3local programming environment oderserver-based programming environment eine Dateihello.py zu erstellen, die wir später in eine andere Datei importieren werden.

Zunächst werdencreate a function ausgegeben, dieHello, World! drucken:

hello.py

# Define a function
def world():
    print("Hello, World!")

Wenn wir das Programm in der Befehlszeile mitpython hello.py ausführen, geschieht nichts, da wir dem Programm nicht befohlen haben, etwas zu tun.

Erstellen wir eine zweite Dateiin the same directory mit dem Namenmain_program.py, damit wirimport the module erstellen können, die wir gerade erstellt haben, und rufen Sie dann die Funktion auf. Diese Datei muss sich im selben Verzeichnis befinden, damit Python weiß, wo sich das Modul befindet, da es kein integriertes Modul ist.

main_program.py

# Import hello module
import hello


# Call function
hello.world()

Da wirimporting a module sind, müssen wir die Funktion aufrufen, indem wir den Modulnamen in Punktnotation referenzieren.

Wir könnten stattdessen das Modul alsfrom hello import world importieren und die Funktion direkt alsworld() aufrufen. Sie können mehr über diese Methode erfahren, indem Siehow to using fromimport when importing modules lesen.

Jetzt können wir das Programm auf der Kommandozeile ausführen:

python main_program.py

In diesem Fall erhalten wir die folgende Ausgabe:

OutputHello, World!

Um zu sehen, wie wirvariables in einem Modul verwenden können, fügen wir unsererhello.py-Datei eine Variablendefinition hinzu:

hello.py

# Define a function
def world():
    print("Hello, World!")

# Define a variable
shark = "Sammy"

Als Nächstes rufen wir die Variable in einerprint()-Funktion in unserermain_program.py-Datei auf:

main_program.py

# 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:

OutputHello, World!
Sammy

Lassen Sie uns abschließend auchdefine a class in der Dateihello.py speichern. Wir erstellen die KlasseOctopus mit den Attributenname undcolor und einer Funktion, die die Attribute beim Aufruf ausgibt.

hello.py

# 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 fügen die Klasse jetzt am Ende unserermain_program.py-Datei hinzu:

main_program.py

# 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 mithello.Octopus() aufgerufen haben, können wir auf die Funktionen und Attribute der Klasse im Namespace dermain_program.py-Datei zugreifen. Auf diese Weise können wirjesse.tell_me_about_the_octopus() in die letzte Zeile schreiben, ohnehello aufzurufen. Wir könnten beispielsweise auch eines der Attribute der Klasse wiejesse.color aufrufen, ohne auf den Namen des Modulshellozu verweisen.

Wenn wir das Programm ausführen, erhalten wir die folgende Ausgabe:

OutputHello, World!
Sammy
This octopus is orange.
Jesse is the octopus's name.

Es ist wichtig zu bedenken, dass Module, obwohl sie häufig Definitionen sind, auch Code implementieren können. Um zu sehen, wie dies funktioniert, schreiben wir unserehello.py-Datei neu, sodass sie dieworld()-Funktion implementiert:

hello.py

# Define a function
def world():
    print("Hello, World!")

# Call function within module
world()

Wir haben auch die anderen Definitionen in der Datei gelöscht.

In unserermain_program.py-Datei löschen wir jetzt jede Zeile mit Ausnahme der import-Anweisung:

main_program.py

# Import hello module
import hello

Wenn wirmain_program.py ausführen, erhalten wir die folgende Ausgabe:

OutputHello, World!

Dies liegt daran, dass das Modulhello die Funktionworld() implementiert hat, die dann anmain_program.py übergeben wird und ausgeführt wird, wennmain_program.py ausgeführt wird.

Ein Modul ist eine Python-Programmdatei, die aus Definitionen oder Code besteht, den Sie in anderen Python-Programmdateien verwenden können.

Zugreifen auf Module aus einem anderen Verzeichnis

Module können für mehr als ein Programmierprojekt nützlich sein. In diesem Fall ist es weniger sinnvoll, ein Modul in einem bestimmten Verzeichnis zu speichern, das mit einem bestimmten Projekt verknüpft 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 anhängen

Eine Möglichkeit besteht darin, den Pfad des Moduls über die Programmierdateien aufzurufen, die dieses Modul verwenden. 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 ist.

Um den Pfad eines Moduls an eine andere Programmierdatei anzuhängen, importieren Sie zunächst das Modulsys zusammen mit allen anderen Modulen, die Sie in Ihrer Hauptprogrammdatei verwenden möchten.

Das Modulsys ist Teil der Python-Standardbibliothek und bietet systemspezifische Parameter und Funktionen, mit denen Sie in Ihrem Programm den Pfad des Moduls festlegen können, das Sie implementieren möchten.

Angenommen, wir haben die Dateihello.py verschoben und sie befindet sich jetzt im Pfad/usr/sammy/, während sich die Dateimain_program.pyin einem anderen Verzeichnis befindet.

In unserermain_program.py-Datei können wir dashello-Modul weiterhin importieren, indem wir dassys-Modul importieren und dann/usr/sammy/ an den Pfad anhängen, den Python nach Dateien sucht.

main_program.py

import sys
sys.path.append('/usr/sammy/')

import hello
...

Solange Sie den Pfad für die Dateihello.py korrekt festgelegt haben, können Sie die Dateimain_program.py fehlerfrei ausführen und dieselbe Ausgabe wie oben erhalten, wennhello.py in der Datei war gleiches Verzeichnis.

Hinzufügen des Moduls zum Python-Pfad

Eine zweite Möglichkeit besteht darin, das Modul dem Pfad hinzuzufügen, in dem Python nach Modulen und Paketen sucht. Dies ist eine dauerhaftere Lösung, die das Modul für die gesamte Umgebung oder das gesamte System verfügbar macht und diese Methode portabler macht.

Um herauszufinden, welchen Pfad Python überprüft, führen Sie den Python-Interpreter in Ihrer Programmierumgebung aus:

python

Importieren Sie als Nächstes das Modulsys:

import sys

Lassen Sie dann Python den Systempfad ausdrucken:

print(sys.path)

Hier erhalten Sie eine Ausgabe mit mindestens einem Systempfad. Wenn Sie sich in einer Programmierumgebung befinden, erhalten Sie möglicherweise mehrere. Sie möchten nach der suchen, die sich in der Umgebung befindet, die Sie gerade verwenden, aber Sie möchten das Modul möglicherweise auch zu Ihrem Hauptsystem-Python-Pfad hinzufügen. Was Sie suchen, sieht ungefähr so ​​aus:

Output'/usr/sammy/my_env/lib/python3.5/site-packages'

Jetzt können Sie die Dateihello.pyin dieses Verzeichnis verschieben. Sobald dies abgeschlossen ist, können Sie dashello-Modul wie gewohnt importieren:

main_program.py

import hello
...

Wenn Sie Ihr Programm ausführen, sollte es ohne Fehler abgeschlossen werden.

Wenn Sie den Pfad Ihres Moduls ändern, können Sie 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.

Fazit

Das Schreiben eines Python-Moduls entspricht dem Schreiben einer anderen Python.py-Datei. In diesem Tutorial wurde beschrieben, wie Sie Definitionen in ein Modul schreiben, diese Definitionen in einer anderen Python-Programmdatei verwenden und festlegen, wo das Modul aufbewahrt werden soll, um darauf zugreifen zu können.

Weitere Informationen zum Installieren und Importieren von Modulen finden Sie unterHow To Import Modules in Python 3.