Rheinwerk Computing < openbook >

 
Inhaltsverzeichnis
1 Einleitung
2 Die Programmiersprache Python
Teil I Einstieg in Python
3 Erste Schritte im interaktiven Modus
4 Der Weg zum ersten Programm
5 Kontrollstrukturen
6 Dateien
7 Das Laufzeitmodell
8 Funktionen, Methoden und Attribute
9 Informationsquellen zu Python
Teil II Datentypen
10 Das Nichts – NoneType
11 Operatoren
12 Numerische Datentypen
13 Sequenzielle Datentypen
14 Zuordnungen
15 Mengen
16 Collections
17 Datum und Zeit
18 Aufzählungstypen – Enum
Teil III Fortgeschrittene Programmiertechniken
19 Funktionen
20 Modularisierung
21 Objektorientierung
22 Ausnahmebehandlung
23 Iteratoren
24 Kontextobjekte
25 Manipulation von Funktionen und Methoden
Teil IV Die Standardbibliothek
26 Mathematik
27 Kryptografie
28 Reguläre Ausdrücke
29 Schnittstelle zu Betriebssystem und Laufzeitumgebung
30 Kommandozeilenparameter
31 Dateisystem
32 Parallele Programmierung
33 Datenspeicherung
34 Netzwerkkommunikation
35 Debugging und Qualitätssicherung
36 Dokumentation
Teil V Weiterführende Themen
37 Anbindung an andere Programmiersprachen
38 Distribution von Python-Projekten
39 Grafische Benutzeroberflächen
40 Python als serverseitige Programmiersprache im WWW – ein Einstieg in Django
41 Wissenschaftliches Rechnen
42 Insiderwissen
43 Von Python 2 nach Python 3
A Anhang
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 464 KB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Python 3 von Johannes Ernesti, Peter Kaiser
Das umfassende Handbuch
Buch: Python 3

Python 3
Pfeil 20 Modularisierung
Pfeil 20.1 Einbinden globaler Module
Pfeil 20.2 Lokale Module
Pfeil 20.2.1 Namenskonflikte
Pfeil 20.2.2 Modulinterne Referenzen
Pfeil 20.2.3 Module ausführen
Pfeil 20.3 Pakete
Pfeil 20.3.1 Importieren aller Module eines Pakets
Pfeil 20.3.2 Namespace Packages
Pfeil 20.3.3 Relative Import-Anweisungen
Pfeil 20.4 Das Paket importlib
Pfeil 20.4.1 Einbinden von Modulen und Paketen
Pfeil 20.4.2 Verändern des Import-Verhaltens
 
Zum Seitenanfang

20    Modularisierung Zur vorigen ÜberschriftZur nächsten Überschrift

Unter Modularisierung versteht man die Aufteilung des Quelltextes in sogenannte Module. Ein Modul stellt üblicherweise Datentypen und Funktionen bereit, die einem bestimmten Zweck dienen, beispielsweise der Arbeit mit Dateien eines bestimmten Dateiformats. Module können in einem Programm eingebunden werden und stellen dem Programmierer dann die enthaltene Funktionalität zur Verfügung. Grundsätzlich gibt es zwei Arten von Modulen:

  • Zum einen kann jedes Python-Programm globale Module, auch Bibliotheken genannt, einbinden. Globale Module werden systemweit installiert und stehen allen Python-Programmen gleichermaßen zur Verfügung. Es ist möglich, eigene globale Module zu schreiben oder ein globales Modul eines Drittanbieters zu installieren.
  • Die zweite Möglichkeit zur Modularisierung sind lokale Module. Darunter versteht man die Kapselung einzelner Programmteile in eigene Programmdateien. Diese Dateien können wie Bibliotheken eingebunden werden, sind aber in keinem anderen Python-Programm verfügbar. Diese Form der Modularisierung hilft bei der Programmierung, da sie dem Programmierer die Möglichkeit gibt, langen Programm-Code überschaubar auf verschiedene Programmdateien aufzuteilen.

In Python besteht der einzige Unterschied zwischen lokalen und globalen Modulen darin, wo sie gespeichert sind. Während sich lokale Module in der Regel im Programmverzeichnis bzw. in einem seiner Unterverzeichnisse befinden, sind globale Module in einigen festgelegten Verzeichnissen der Python-Installation gespeichert.[ 80 ](Selbst geschriebene Bibliotheken können Sie in das Unterverzeichnis site-packages der Python-Installation speichern. Dort werden üblicherweise auch Bibliotheken von Drittanbietern installiert. )

 
Zum Seitenanfang

20.1    Einbinden globaler Module Zur vorigen ÜberschriftZur nächsten Überschrift

Ein globales Modul, sei es ein Teil der Standardbibliothek oder ein selbst geschriebenes, kann mithilfe der import-Anweisung eingebunden werden. Wir werden in den Beispielen hauptsächlich das Modul math der Standardbibliothek verwenden. Das ist ein Modul, das mathematische Funktionen wie sin oder cos sowie mathematische Konstanten wie pi bereitstellt. Um sich diese Funktionalität in einem Programm zunutze machen zu können, wird die import-Anweisung in der folgenden Form verwendet:

>>> import math

Eine import-Anweisung besteht aus dem Schlüsselwort import, gefolgt von einem Modulnamen. Es können mehrere Module gleichzeitig eingebunden werden, indem sie, durch Kommata getrennt, hinter das Schlüsselwort geschrieben werden:

>>> import math, random

Dies ist äquivalent zu:[ 81 ](Aus Gründen der Übersicht wird generell empfohlen, jedes Modul in einer separaten Zeile zu importieren. )

>>> import math
>>> import random

Obwohl eine import-Anweisung prinzipiell überall im Quellcode stehen kann, ist es der Übersichtlichkeit halber sinnvoll, alle Module zu Beginn des Quelltextes einzubinden.

Nachdem ein Modul eingebunden wurde, wird ein neuer Namensraum mit seinem Namen erstellt. Über diesen Namensraum sind alle Funktionen, Datentypen und Werte des Moduls im Programm nutzbar. Mit einem Namensraum kann wie mit einer Instanz umgegangen werden, und die Funktionen des Moduls können wie Methoden des Namensraums verwendet werden. So bindet folgendes Beispielprogramm das Modul math ein und berechnet den Sinus der Kreiszahl π:

>>> import math
>>> math.sin(math.pi)
1.2246467991473532e-16

Es ist möglich, den Namen des Namensraums durch eine import/as-Anweisung festzulegen:

>>> import math as mathematik
>>> mathematik.sin(mathematik.pi)
1.2246467991473532e-16

Dieser neue Name ist keine zusätzliche Option. Das Modul math ist nun ausschließlich über den Namensraum mathematik erreichbar.

Darüber hinaus kann die import-Anweisung so verwendet werden, dass kein eigener Namensraum für das eingebundene Modul erzeugt wird, sondern alle Elemente des Moduls in den globalen Namensraum des Programms eingebunden werden:

>>> from math import *
>>> sin(pi)
1.2246467991473532e-16

Wenn die import-Anweisung in dieser Weise verwendet wird, sollten Sie beachten, dass keine Referenzen oder Funktionen des einzubindenden Moduls in den aktuellen Namensraum importiert werden, wenn sie mit einem Unterstrich beginnen. Diese Elemente eines Moduls werden als privat und damit als modulintern angesehen.

[»]  Hinweis

Der Sinn von Namensräumen ist es, thematisch abgegrenzte Bereiche, also zum Beispiel den Inhalt eines Moduls, zu kapseln und über einen gemeinsamen Namen anzusprechen. Wenn Sie den kompletten Inhalt eines Moduls in den globalen Namensraum eines Programms einbinden, kann es vorkommen, dass die Bibliothek mit eventuell vorhandenen Referenzen interferiert. In einem solchen Fall werden die bereits bestehenden Referenzen kommentarlos überschrieben, wie das folgende Beispiel zeigt:

>>> pi = 1234
>>> from math import *
>>> pi
3.141592653589793

Aus diesem Grund ist es sinnvoll, ein Modul, wenn es vollständig eingebunden wird, in einem eigenen Namensraum zu kapseln und damit die Anzahl der im globalen Namensraum eingebundenen Elemente möglichst gering zu halten.

Im Hinweiskasten wurde gesagt, dass man die Anzahl der in den globalen Namensraum importierten Objekte möglichst gering halten sollte. Aus diesem Grund ist die oben beschriebene Form der from/import-Anweisung nicht praktikabel. Es ist aber möglich, anstelle des Sterns eine Liste von zu importierenden Elementen des Moduls anzugeben:

>>> from math import sin, pi
>>> sin(pi)
1.2246467991473532e-16

In diesem Fall werden ausschließlich die Funktion sin und die Konstante pi in den globalen Namensraum importiert. Auch hier ist es möglich, durch ein dem Namen nachgestelltes as einen eigenen Namen festzulegen:

>>> from math import sin as hallo, pi as welt
>>> hallo(welt)
1.2246467991473532e-16

So viel zum Einbinden globaler Module. Sie werden die Standardbibliothek von Python im dritten Teil dieses Buchs noch ausführlich kennenlernen.

[»]  Hinweis

Die Aufzählung der mit einer from/import-Anweisung zu importierenden Objekte kann unter Umständen recht lang werden. In solchen Fällen darf sie in runde Klammern gefasst werden. Der Vorteil dieser Schreibweise ist, dass eingeklammerte Ausdrücke beliebig formatiert, unter anderem auch auf mehrere Zeilen umbrochen werden dürfen:

>>> from math import (sin, cos, tan,
... sinh, cosh, tanh)

Beachten Sie, dass die einzubindenden Module bei einer normalen import-Anweisung nicht in Klammern gesetzt werden dürfen.

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Python 3 Python 3
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Einstieg in Python
Einstieg in Python


Zum Rheinwerk-Shop: Python. Der Grundkurs
Python. Der Grundkurs


Zum Rheinwerk-Shop: Algorithmen mit Python
Algorithmen mit Python


Zum Rheinwerk-Shop: Objektorientierte Programmierung
Objektorientierte Programmierung


Zum Rheinwerk-Shop: Raspberry Pi. Das umfassende Handbuch
Raspberry Pi. Das umfassende Handbuch


Zum Rheinwerk-Shop: Roboter-Autos mit dem Raspberry Pi
Roboter-Autos mit dem Raspberry Pi


Zum Rheinwerk-Shop: Neuronale Netze programmieren mit Python
Neuronale Netze programmieren mit Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2020
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern