Lektionen des Moduls (4/4)
import und Module
Ein Modul in Python ist einfach eine .py-Datei. Um den Code eines Moduls
in einer anderen Datei zu verwenden, importierst du es.
Import-Formen
# 1) Import des gesamten Moduls
import math
math.sqrt(16) # 4.0
math.pi # 3.14159...
# 2) Import bestimmter Namen
from math import sqrt, pi
sqrt(16) # jetzt direkt verfügbar
pi
# 3) Import mit Alias
import numpy as np # idiomatische Konvention
from datetime import datetime as dt
# 4) "Star"-Import (nicht empfohlen)
from math import * # verschmutzt den Namensraum, vermeidenWo Python nach Modulen sucht
Python sucht nach Modulen in sys.path. Dies umfasst:
- das Verzeichnis des ausgeführten Skripts,
- die Verzeichnisse in
PYTHONPATH, - die installierten Bibliotheken (
site-packages).
import sys
sys.path # Liste von VerzeichnissenEin Modul erstellen
Erstelle mio_modulo.py:
# mio_modulo.py
PI = 3.14159
def area_cerchio(r):
return PI * r * rAus einer anderen Datei im selben Verzeichnis:
import mio_modulo
mio_modulo.area_cerchio(5) # 78.53975
from mio_modulo import area_cerchio, PIif __name__ == "__main__":
Wenn ein Skript direkt ausgeführt wird, entspricht seine spezielle Variable __name__
dem Wert "__main__". Wenn dieselbe Datei als Modul importiert wird,
entspricht __name__ dem Modulnamen.
# strumento.py
def fai_qualcosa():
print("lavoro!")
if __name__ == "__main__":
# wird nur ausgeführt, wenn du `python strumento.py` aufrufst
# wird NICHT ausgeführt, wenn jemand diese Datei importiert
fai_qualcosa()Dies ist das Standardmuster für Dateien, die sowohl als wiederverwendbares Modul als auch als ausführbares Skript dienen können.
Packages: Ordner von Modulen
Ein Verzeichnis, das eine Datei namens __init__.py (selbst eine leere) enthält, wird zu einem
importierbaren Package (Paket):
mio_pkg/
__init__.py
utenti.py
pagamenti.py
from mio_pkg import utenti
from mio_pkg.utenti import crea_utenteProbiere es aus
Importiere die Funktion `sqrt` aus dem Modul `math` (mit `from math import sqrt`), berechne dann die Quadratwurzel aus 144 und weise das Ergebnis `r` zu. Evaluiere `r`.
Hinweis anzeigen
from math import sqrt
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Importiere das Modul `random` mit dem Alias `rnd` (`import random as rnd`), setze dann den Seed auf 42 mit rnd.seed(42) und evaluiere rnd.randint(1, 100).
Hinweis anzeigen
import random as rnd
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Importiere die Funktionen `sin` und `cos` direkt aus dem Modul `math` unter Verwendung von `from ... import ...`. Berechne die Summe aus `sin(0)` und `cos(0)`, speichere sie in `trig_sum` und evaluiere sie.
Hinweis anzeigen
sin(0) ergibt 0.0, cos(0) ergibt 1.0. Die Summe ist 1.0. Verwende from math import sin, cos.
Lösung nach 3 Versuchen verfügbar