2. Unterrichtsblock

Kursinhalte

Python Module

Ein Modul ist nichts anderes, als eine separate Python-Datei mit einer Reihe von Funktionen, die man in die aktuelle Anwendung einbetten möchte. Module (Dateien) können auf dem eigenen Server, oder als sog. Bibliothek auf einem anderen Server liegen.

Bekannte Module/Bibliotheken:

  • numPy
  • openAI
  • pyPlot
  • math

Erstellen eines Moduls

Um ein Modul zu erstellen, speichert man einfach den gewünschten Code in einer Datei mit der Dateierweiterung .py

def begruessung(name):
  print("Hallo, " + name)

Aufgabe

Speichere o.g. Code in einer Datei mit dem Namen meinmodul.py
Die Datei meinmodul.py muss im selben Verzeichnis liegen, wie die Datei, mit welcher wir das Modul später aufrufen möchten.

Verwenden eines Moduls

Nun können wir das gerade erstellte Modul verwenden, indem wir die import Anweisung ausführen.
Importieren des Moduls mit dem Namen meinmodul und Aufruf der Funktion begruessung auf:

import meinmodul

meinmodul.begruessung("Maxi")

Hinweis: Wenn man eine Funktion aus einem Modul verwendet, verwendet man die Syntax: Modulname.Funktionsname .

Variablen im Modul

Das Modul kann, wie bereits beschrieben, Funktionen enthalten, aber auch Variablen aller Art (Arrays, Dictionaries, Objekte usw.):

Beispiel

Speichern eines Codes in der Datei meinmodul.py

person1 = {
  "name": "Peter",
  "alter": 26,
  "stadt": "Rosenheim"
}

Beispiel

Importieren des Moduls mit dem Namen meinmodul und Zugriff Sie auf das Dictionary person1:

import meinmodul

a = meinmodul.person1["alter"]
print(a)

Benennen eines Moduls

Man kann der Moduldatei einen beliebigen Namen geben, sie muss jedoch die Dateierweiterung .py haben

Ein Modul umbenennen

Man kann beim Importieren eines Moduls einen Alias ​​erstellen, indem man das as Schlüsselwort verwendet:

Beispiel

Erstellen eines Alias ​​für meinmodul als mm:

import meinmodul as mm

a = mm.person1["stadt"]
print(a)

Integrierte Module

Es gibt mehrere integrierte Module in Python, die man jederzeit importieren kann.

Beispiel

Importieren und verwenden des platform Moduls:

import platform

x = platform.system()
print(x)

Aufgabe

Recherchiere die Verwendung und Funktionen des platform Moduls

Verwenden der dir()-Funktion

Es gibt eine integrierte Funktion zum Auflisten aller Funktionsnamen (oder Variablennamen) in einem Modul. Die dir()Funktion:

Beispiel

Auflisten aller definierten Namen, die zum Modul platform gehören:

import platform

x = dir(platform)
print(x)

Hinweis: Die Funktion dir() kann auf allen Modulen verwendet werden , auch auf denen, die man selbst erstellt hat.

Aus Modulen importieren

Mithilfe des from Schlüsselworts kann man festlegen, dass nur Teile aus einem Modul importiert werden sollen.

Beispiel

Das genannte Modul meinmodul hat eine Funktion und ein Wörterbuch:

def gruss(name):
  print("Servus, " + name)

person1 = {
  "name": "Peter",
  "alter": 26,
  "stadt": "Rosenheim"
}

Beispiel

Importiere nur das Dictionary person1 aus dem Modul:

from meinmodul import person1

print (person1["stadt"])

Hinweis: Wenn man mit dem from Schlüsselwort importiert, verwendet man nicht den Modulnamen, wenn man auf Elemente im Modul verweist. 

Beispiel: person1["stadt"]
Nichtmeinmodul.person1["stadt"]

Aufgabe

Baue die Aufgaben aus dem letzten Unterrichtsfach so um, dass Klassen in Modulen gespeichert werden und zur Ausführung in den Code importiert werden müssen.
Nutze dabei einmal den Import einer gesamten Klasse/Funktion und einmal die Integration über das from Keyword.

Module aus einem Dateipfad importieren

Ziel der Lektion: Die Befähigung, Module oder spezifische Objekte aus Modulen zu importieren, die sich in Unterverzeichnissen eines Projekts befinden. Der Lerneffekt ist, wie wir Python dazu bringen können, untergeordnete Ordner zu erkennen und den Import korrekt durchzuführen.

Einführung in Module und Ordnerstruktur

In einem komplexen Python-Projekt ist es üblich, den Code in mehrere Module zu organisieren, die in verschiedenen Ordnern liegen. Dies hilft dabei, eine klare Struktur und Übersichtlichkeit zu bewahren.

Beispielhafte Projektstruktur:

mein_projekt/
├── unterrichtsblock_2.py
└── hilfsmittel/
    └── mathe_operationen/
        └── meinmodul.py

In diesem Aufbau möchten Sie eventuell Funktionen oder Variablen aus meinmodul.py in unterrichtsblock_2.py importieren.

Vorbereitung: Definieren eines Dictionaries in einem Modul

Erstellen der Datei meinmodul.py im Ordner mathe_operationen:

# Inhalt von meinmodul.py
def addiere(x, y):
    return x + y

def subtrahiere(x, y):
    return x - y

operationen_dict = {
    'addition': addiere,
    'subtraktion': subtrahiere
}

Methode zum Importieren von Modulen aus tieferliegenden Ordnern

Schritt 1: Pfad verstehen und anpassen

Python verwendet eine Liste namens sys.path, um Orte zu kennen, an denen nach Modulen gesucht wird. Um ein Modul aus einem tieferliegenden Ordner aufzurufen, muss der Pfad angepasst werden.

Schritt 2: unterrichtsblock_2.py vorbereiten

Code zum Importieren eines Moduls mit einem angepassten Pfad:

# unterrichtsblock_2.py
import sys
import os

# Fügt den Pfad zum Ordner 'mathe_operationen' hinzu
mathe_operationen_pfad = os.path.join(os.path.dirname(__file__), 'hilfsmittel', 'mathe_operationen')
if mathe_operationen_pfad not in sys.path:
    sys.path.append(mathe_operationen_pfad)

# Importieren des Dictionaries aus meinmodul.py
from meinmodul import operationen_dict

# Verwendung des Dictionaries
ergebnis1 = operationen_dict['addition'](5, 3)
ergebnis2 = operationen_dict['subtraktion'](10, 4)

print("Addition:", ergebnis1)  # Ausgabe: Addition: 8
print("Subtraktion:", ergebnis2)  # Ausgabe: Subtraktion: 6

    Erklärung des Codes:

    • os.path.join: Baut den Pfad korrekt für das Betriebssystem auf, auf dem das Skript läuft.
    • sys.path.append: Fügt den erstellten Pfad zu sys.path hinzu, sodass Python weiß, wo es das Modul meinmodul finden kann.
    • Import: Sobald der Pfad gesetzt ist, können wir das Modul oder spezifische Objekte daraus importieren, wie z.B. das Dictionary operationen_dict.

    Aufgabe

    Aufgabe 1: Ändere die Struktur des Projekts, indem Du eine weitere Ebene von Ordnern hinzufügst, wie beispielsweise fortgeschritten/ direkt unter mathe_operationen/, und verschiebe die meinmodul.py dorthin. Passe unterrichtsblock_2.py entsprechend an und führe das gleiche Importverfahren durch.

    Aufgabe 2: Füge eine zusätzliche Funktion zu meinmodul.py hinzu, die Multiplikation ausführt. Importiere diese Funktion in unterrichtsblock_2.py und nutze sie dort.

    Übungsaufgaben

    1. Bibliothek importieren und verwenden:
      • Importiere die math Bibliothek und berechne den Winkel in Radiant für 45 Grad mit der Funktion math.radians().
    1. Importiere bestimmte Funktionen aus einer Bibliothek:
      • Importiere die Funktion sqrt aus dem math Modul und berechne die Wurzel aus 64.
    1. Bibliothek unter einem Alias importieren:
      • Importiere das datetime Modul unter dem Alias dt und gib das aktuelle Datum und die aktuelle Uhrzeit aus.
    1. Erstelle ein eigenes Modul und importiere es:
      • Erstelle eine Datei namens gruss.py mit einer Funktion sage_hallo(), die eine Begrüßung ausgibt. Importiere dieses Modul in einem anderen Script und rufe die Funktion sage_hallo() auf.
    1. Auslagern und Importieren einer Klasse:
      • Erstelle eine Datei namens auto.py und definiere darin eine Klasse Auto mit einer Methode hupe(), die „Hup! Hup!“ ausgibt. Importiere die Klasse Auto in einem anderen Script und erstelle eine Instanz von Auto, dann rufe die Methode hupe() auf.