Module mit der import-Anweisung importieren
In diesem Schritt lernen wir, wie man Module in Python mit der import
-Anweisung importiert. Die import
-Anweisung ist die gebräuchlichste Methode, um die in einem Modul definierten Funktionen, Klassen und Variablen für die Verwendung in Ihrem aktuellen Skript oder Ihrer interaktiven Sitzung verfügbar zu machen. Die grundlegende Syntax lautet import modul_name
. Sie können mehrere Module importieren, indem Sie ihre Namen mit Kommas trennen: import modul1, modul2, ...
.
Ein wichtiger Punkt, den Sie beachten sollten, ist, dass unabhängig davon, wie oft Sie eine import
-Anweisung für dasselbe Modul ausführen, der Code des Moduls nur einmal ausgeführt wird. Dies verhindert eine redundante Ausführung des Modulinitialisierungscodes.
Erstellen wir eine einfache Python-Datei, um den Modulimport zu demonstrieren. Stellen Sie in der WebIDE sicher, dass Sie sich im Verzeichnis ~/project
befinden. Erstellen Sie eine neue Datei namens hello.py
.
Öffnen Sie die Datei hello.py
im Editor und fügen Sie den folgenden Code hinzu:
print("hello")
if __name__ == "__main__":
print("world")
Speichern Sie die Datei.
Lassen Sie uns dieses Skript nun direkt vom Terminal aus ausführen.
python3 hello.py
hello
world
Wie Sie sehen können, wurden beide print
-Anweisungen ausgeführt.
Als Nächstes sehen wir, was passiert, wenn wir diese Datei als Modul importieren. Öffnen Sie eine Python-interaktive Sitzung im Terminal, indem Sie python3
eingeben.
python3
Python 3.10.12 (...)
Type "help", "copyright", "credits" or "license" for more information.
>>>
Importieren Sie nun das hello
-Modul. Beachten Sie, dass Sie beim Importieren nicht die .py
-Erweiterung angeben.
import hello
hello
Beachten Sie, dass beim Importieren des Moduls nur die erste print
-Anweisung ("hello") ausgeführt wurde. Die zweite print
-Anweisung ("world") wurde nicht ausgeführt.
Dieses Verhalten wird durch den Block if __name__ == "__main__":
gesteuert. __name__
ist eine spezielle integrierte Variable in Python. Wenn eine Python-Datei direkt als Skript ausgeführt wird, wird die Variable __name__
auf den String "__main__"
gesetzt. Wenn die Datei jedoch als Modul in ein anderes Skript oder eine interaktive Sitzung importiert wird, wird die Variable __name__
auf den Namen des Moduls gesetzt (in diesem Fall "hello"
).
Die Bedingung if __name__ == "__main__":
prüft, ob das Skript direkt ausgeführt wird. Wenn ja, wird der Code innerhalb des if
-Blocks ausgeführt. Wenn das Skript als Modul importiert wird, ist die Bedingung falsch und der Code innerhalb des if
-Blocks wird übersprungen. Dies ist ein gängiges Muster, um Code einzuschließen, der nur ausgeführt werden soll, wenn das Skript direkt ausgeführt wird, z. B. Test- oder Setup-Code.
Sie können den Wert von __name__
überprüfen, wenn das Modul importiert wird, indem Sie auf das __name__
-Attribut des importierten Moduls zugreifen:
hello.__name__
'hello'
Dies bestätigt, dass beim Importieren der __name__
des hello
-Moduls tatsächlich "hello"
ist.
Lassen Sie uns nun untersuchen, wie Python Module findet, wenn Sie die import
-Anweisung verwenden. Python sucht nach Modulen in einer Liste von Verzeichnissen. Sie können diese Liste anzeigen, indem Sie das sys
-Modul importieren und auf die Variable sys.path
zugreifen.
Beenden Sie zuerst die aktuelle Python-interaktive Sitzung, indem Sie exit()
eingeben oder Strg + D
drücken.
exit()
Starten Sie nun eine neue Python-interaktive Sitzung.
python3
Importieren Sie das sys
-Modul und geben Sie sys.path
aus:
import sys
print(sys.path)
['', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/labex/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']
Die Ausgabe ist eine Liste von Verzeichnissen. Python sucht in diesen Verzeichnissen nach Modulen in der Reihenfolge, in der sie in der Liste erscheinen. Der erste Eintrag, ''
, repräsentiert das aktuelle Verzeichnis (~/project
in diesem Fall). Das bedeutet, dass Python zuerst in dem Verzeichnis nach Modulen sucht, in dem das Skript ausgeführt wird oder die interaktive Sitzung gestartet wurde. Deshalb konnten wir hello.py
direkt aus dem Verzeichnis ~/project
importieren.
Wenn ein Modul mit demselben Namen in mehreren Verzeichnissen in sys.path
vorhanden ist, wird dasjenige importiert, das in dem Verzeichnis gefunden wird, das in der Liste früher erscheint.
Erstellen wir als Nächstes eine weitere Python-Datei, um den Zugriff auf Variablen und Funktionen aus einem importierten Modul zu üben. Erstellen Sie im Verzeichnis ~/project
eine neue Datei namens abcd.py
.
Öffnen Sie abcd.py
und fügen Sie den folgenden Code hinzu:
x = 5
y = 9
def a():
print("This is function a")
def b():
print("This is function b")
def c():
print("This is function c")
def d():
print("This is function d")
Speichern Sie die Datei. Dieses Modul definiert zwei Variablen (x
und y
) und vier einfache Funktionen (a
, b
, c
und d
).
Lassen Sie uns nun das abcd
-Modul in einer Python-interaktiven Sitzung importieren und auf dessen Inhalte zugreifen. Beenden Sie die aktuelle Python-Sitzung, falls Sie sich noch in einer befinden (exit()
oder Strg + D
). Starten Sie eine neue Sitzung.
python3
Importieren Sie das abcd
-Modul:
import abcd
Nun können Sie über den Punktoperator (.
) auf die in abcd.py
definierten Variablen und Funktionen zugreifen:
abcd.x
5
abcd.y
9
abcd.a()
This is function a
Sie können ähnlich abcd.b()
, abcd.c()
und abcd.d()
aufrufen. Dies zeigt, wie Sie mit der Syntax modul_name.member_name
auf die Elemente eines importierten Moduls zugreifen.