Python „Module“ Anja Aue | 12.09.16 Modularisierung Die Aufgabe wird in verschiedene kleine Aufgaben zerlegt. Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung von einem sehr großen Programm in mehrere Quelltext-Dateien. Programmiersprache Python Seite 2 Bibliotheken Werkzeugkasten aus Datentypen und Funktionen. Die Standardbibliothek wird bei der Installation von Python automatisiert zur Verfügung gestellt. Selbstgeschriebene Werkzeugkästen oder von Drittanbietern. Einbindung mit dem Schlüsselwort import. Programmiersprache Python Seite 3 Hilfe zur Standardbibliothek Sortiert nach Kategorien. https://docs.python.org/3.3/library/. Alphabetisch sortiert. https://docs.python.org/3/pymodindex.html. Programmiersprache Python Seite 4 Import von Bibliotheken import math def getSinus(): sinus = math.sin(math.pi / 2) print("Sinus: ", sinus) beispiel\kapitel012_Modul\standardLibrary.py Programmiersprache Python Seite 5 import-Anweisung import math import Bibliothek Bereitstellung der Funktionen, Methoden und Datentypen der Standardbibliothek math. Mit Hilfe des Schlüsselwortes import wird eine Standardbibliothek eingebunden. Programmiersprache Python Seite 6 Aufruf von Funktionen aus einer Bibliothek math . Bibliothek . sin ( math.pi / 2 ) Funktion ( parameter ) Der Aufruf der Funktionen in der Bibliothek erfolgt über den vollen Namen. Links vom Punktoperator: In welcher Bibliothek ist die Funktion definiert? Rechts vom Punktoperator: Welche Funktion wird aufgerufen? Programmiersprache Python Seite 7 Import von Funktionen oder Methoden form math import sin, pi def getSinus(): sinus = sin(pi / 2) print("Sinus: ", sinus) beispiel\kapitel012_Modul\standardLibrary.py Programmiersprache Python Seite 8 import-Anweisung from math import sin , pi from Bibliothek import Funktion , Funktion Aus einer Bibliothek werden Funktionen importiert. Es werden nur die benötigten Funktionen, Methoden und eingebunden. Die zu importierenden Funktionen werden durch ein Kommata getrennt. Programmiersprache Python Seite 9 Aufruf der importierten Funktionen sin ( math.pi / 2 ) Funktion ( parameter ) Die importierte Funktion wird mit dem Namen aufgerufen. Der Aufruf der Funktion entspricht dem Funktionskopf. Programmiersprache Python Seite 10 Modul Datei mit der Endung „.py“ Module enthalten Code, geschrieben in einer Programmiersprache. Module können Klassen, Funktionen und so weiter enthalten. Programmiersprache Python Seite 11 Import von eigenen Modulen import modul_classKreis def KreisBerechnung(): kreis = modul_classKreis.ClsKreis(3) print("Radius: ", kreis.getRadius()) print("Umfang: ", kreis.getUmfang()) print("Fläche: ", kreis.getFlaeche()) beispiel\kapitel012_Modul\modul_Start.py Programmiersprache Python Seite 12 import-Anweisung import modul_classKreis import Datei Mit Hilfe des Schlüsselwortes import wird eine Datei mit der Endung *.py eingebunden. Module werden zuerst im aktuellen Verzeichnis gesucht. Programmiersprache Python Seite 13 Wo werden Module gesucht? import sys for verzeichnis in sys.path: print(verzeichnis) Die Bibliothek sys definiert system-spezifische Funktionen, Datentypen etc. In diesem Beispiel werden mit Hilfe von sys.path eine Liste aller Pfade zu Modulen ausgegeben. Programmiersprache Python Seite 14 Dokumentation von eigenen Modulen from math import pi, pow '''Kreis-Berechnungen in Abhängigkeit eines Radius''' class ClsKreis(object): __anzahl = 0 ''' Default-Radius = 1''' def __init__(self, radius = 1): self.__radius = radius ClsKreis.__anzahl += 1 beispiel\kapitel012_Modul\modul_classKreis.py Programmiersprache Python Seite 15 Docstrings Kommentare, die mit drei Apostrophs beginnen und enden. Blockkommentare am Beginn eines Moduls. Blockkommentare in der ersten Zeile eines Funktions- oder Methodenrumpfes. Programmiersprache Python Seite 16 Aufruf der Hilfe >>> help(modul_classKreis) Der Funktion help() wird als Argument der Name eines Moduls übergeben. Zu dem übergebenen Modul wird die Hilfe angezeigt. Hinweis: Vor dem Aufruf einer Hilfe zu eigenen Module müssen diese mit Hilfe des Schlüsselwortes import zuerst geladen werden. Programmiersprache Python Seite 17 Namensraum Container, in dem eine Methode, Funktion und so weiter gültig ist. Namensräume vermeiden Namenskonflikte bei Funktionen, Variablen etc. Programmiersprache Python Seite 18 Qualifizierte Namen modul_classKreis . ClsKreis(3) math . pi namespace . attribut Der Name des Moduls wird mit einem darin definierten Element durch den Punkt verbunden. Programmiersprache Python Seite 19 Wo ist das Element definiert? modul_classKreis . math . namespace . Links vom Punkt wird der Namensraum angegeben. Als Platzhalter für einen Namensraum wird der Name eines Moduls oder einer Bibliothek genutzt. In diesem Namensraum ist das gesuchte Element definiert. Es ist dort gültig. Programmiersprache Python Seite 20 Welches Element wird angesprochen? . ClsKreis(3) . pi . attribut Rechts vom Punkt steht eine Name einer Variablen oder eines Attributs. Der Wert der Variablen soll gelesen oder modifiziert werden, Rechts vom Punkt kann der Name einer Klasse stehen. Mit Hilfe des qualifizierten Namens wird eine Instanz erzeugt. Programmiersprache Python Seite 21 Unqualifizierte Namen ClsKreis(3) pi attribut Es wird nur der Namen des Elements ohne Angabe des Namensraumes genutzt. Programmiersprache Python Seite 22 Objektattribute von der Klasse ... from math import pi, pow import modul_classPunkt class ClsKreis(object): __anzahl = 0 def __init__(self, radius = 1, x = 0, y = 0): self.__radius = radius self.__position = modul_classPunkt.ClsPunkt(x, y) ClsKreis.__anzahl += 1 beispiel\kapitel012_Modul\modul_classKreis.py Programmiersprache Python Seite 23 … definieren def __init__(self, radius = 1, x = 0, y = 0): self.__position = modul_classPunkt.ClsPunkt(x, y) Das Objektattribut __position ist vom Typ der Klasse ClsPunkt. Ein Objektattribut kann eine Referenz auf ein Objekt einer anderen Klasse speichern. Die Instanz wird mit Hilfe des qualifizierten Namens erzeugt. Die Klasse ClsPunkt ist in dem Modul modul_classPunkt definiert. In den runden Klammern werden die Argumente zum Initialisieren der Objektattribute der Klasse ClsPunkt übergeben. Programmiersprache Python Seite 24 … und nutzen def printInformation(self): koordinaten = self.__position.getPosition() xKoordinate = str(koordinaten[0]) yKoordinate = str(koordinaten[1]) Objektattribute, die eine Instanz einer Klasse sind, können Methoden aufrufen. Die Instanz und die Methode aus der Klasse werden durch den Punktoperator verbunden. Programmiersprache Python Seite 25