„Batteries included“¶
In Python kann eine Bibliothek aus mehreren Komponenten bestehen, einschließlich eingebauter Datentypen und Konstanten, die ohne eine Importanweisung verwendet werden können, wie z.B. Zahlen und Listen, sowie einiger eingebauter Funktionen und Exceptions. Der größte Teil der Bibliothek ist eine umfangreiche Sammlung von Modulen. Wenn ihr Python installiert habt, stehen euch auch verschiedene Bibliotheken zur Verfügung zum
Managen von Datentypen¶
Die Standardbibliothek enthält natürlich Unterstützung für die in Python eingebauten Typen. Darüber hinaus gibt es in der Standardbibliothek drei Kategorien, die sich mit verschiedenen Datentypen befassen: Module für Strings, Datentypen und Zahlen.
String-Module¶
:
Modul |
Beschreibung |
|---|---|
vergleicht mit Konstanten wie |
|
sucht und ersetzt Text mit regulären Ausdrücken |
|
konvertiert zwischen Python-Werten und C-Strukturen, die als Python-Bytes-Objekte dargestellt werden. |
|
hilft beim Berechnen von Deltas, beim Auffinden von Unterschieden zwischen Zeichenketten oder Sequenzen und beim Erstellen von Patches und Diff-Dateien |
|
umbricht und füllt Text, formatiert Text mit Zeilenumbrüchen oder Leerzeichen |
Checks¶
Könnt ihr z.B. eine Zeichenkette mit einer ganzen Zahl addieren oder multiplizieren, oder mit einer Gleitkommazahl oder einer komplexen Zahl?
Wie könnt ihr eine Überschrift wie
variables and expressionsso abändern, dass sie keine Leerzeichen mehr enthält und besser als Dateinamen verwendet werden kann?Welche der folgenden Zeichenketten können nicht in Zahlen umgewandelt werden und warum?
int("1e2")int(1e+2)int("1+2")int("+2")
Wenn ihr überprüfen wollt, ob eine Zeile mit
.. note::beginnt, welche Methode würdet ihr verwenden? Gibt es auch noch andere Möglichkeiten?Angenommen, ihr habt eine Zeichenkette mit Ausrufezeichen, Anführungszeichen und Zeilenumbrruch. Wie können diese aus der Zeichenkette entfernt werden?
Wie könnt ihr alle Leerräume und Satzzeichen aus einer Zeichenfolge in einen Bindestrich (
-) ändern?Welche Anwendungsfälle könnt ihr euch vorstellen, in denen das
struct-Modul für das Lesen oder Schreiben von Binärdaten nützlich wäre?beim Lesen und Schreiben einer Binärdatei
beim Lesen von einer externen Schnittstelle, wobei die Daten genau so gespeichert werden sollen, wie sie übermittelt wurden
Welchen regulären Ausdruck würdet ihr verwenden, um Zeichenfolgen zu finden, die die Zahlen zwischen -3 und +3 darstellen?
Welchen regulären Ausdruck würdet ihr verwenden, um Hexadezimalwerte zu finden?
Module für Datentypen¶
Modul |
Beschreibung |
|---|---|
Zeit- und Kalenderoperationen |
|
Container-Datentypen |
|
ermöglicht die Erstellung von Aufzählungsklassen, die symbolische Namen an konstante Werte binden |
|
Effiziente Arrays von numerischen Werten |
|
Event-Scheduler |
|
Synchronisierte Queue-Klasse |
|
Flache und tiefe Kopieroperationen |
|
druckt Python-Datenstrukturen „hübsch“ aus |
|
unterstützt die Kommentierung von Code mit Hinweisen auf die Typen von Objekten, insbesondere von Funktionsparametern und Rückgabewerten |
Module für Zahlen¶
:
Modul |
Beschreibung |
|---|---|
für numerische abstrakte Basisklassen |
|
für mathematische Funktionen für reelle und komplexe Zahlen |
|
für dezimale Festkomma- und Gleitkomma-Arithmetik |
|
für Funktionen zur Berechnung von mathematischen Statistiken |
|
für rationale Zahlen |
|
zum Erzeugen von Pseudozufallszahlen und -auswahlen sowie zum Mischen von Sequenzen |
|
für Funktionen, die Iteratoren für effiziente Schleifen erzeugen |
|
für Funktionen höherer Ordnung und Operationen auf aufrufbaren Objekten |
|
für Standardoperatoren als Funktionen |
Checks¶
Erstellt einige Zahlenvariablen (Ganzzahlen, Gleitkommazahlen und komplexe Zahlen). Experimentiert ein wenig damit, was passiert, wenn ihr Operationen mit ihnen durchführt, auch typübergreifend.
Ladet das Modul
mathund probiert einige der Funktionen aus. Ladet dann auch das Modulcmathund macht dasselbe.Wie könnt ihr die Funktionen des
math-Moduls wiederherstellen?Entscheidet, ob die folgenden Aussagen wahr oder falsch sind:
10-1[0]1 and 01 > 0 or []
Ändern von Dateien¶
:
Modul |
Beschreibung |
|---|---|
führt allgemeine Pfadnamenmanipulationen durch |
|
manipuliert Pfadnamen |
|
iteriert über mehrere Eingabedateien |
|
vergleicht Dateien und Verzeichnisse |
|
erzeugt temporäre Dateien und Verzeichnisse |
|
verwenden UNIX-ähnlicher Pfad- und Dateinamensmuster |
|
greift zufällig auf Textzeilen zu |
|
führt Dateioperationen auf höherer Ebene aus |
|
Zuordnung von Dateinamen zu MIME-Typen |
|
aktivieren von Python-Objektserialisierung und -persistenz, s.a. Das pickle-Modul |
|
liest und schreibt CSV-Dateien |
|
JSON-Kodierer und -Dekodierer |
|
bietet eine DB-API 2.0-Schnittstelle für SQLite-Datenbanken, s.a. Das sqlite-Modul |
|
|
liest und schreibt XML-Dateien, s.a. Das xml-Modul |
Parsen von HTML und XHTML |
|
liest und schreibt Windows-ähnliche Konfigurationsdateien ( |
|
Kodierung/Dekodierung von Dateien oder Streams |
|
konvertiert zwischen Python-Werten und C-Strukturen, die als als Python-Bytes-Objekte dargestellt werden. |
|
für das Arbeiten mit Archivdateien und Komprimierungen |
Checks¶
Verwendet die Funktionen des
os-Moduls, um einen Pfad zu einer Datei namensexample.logzu nehmen und einen neuen Dateipfad im selben Verzeichnis für eine Datei namensexample.log1zu erstellen.Welche Bedeutung hat das Hinzufügen von
bals Parameter vonopen()?Öffnet eine Datei
my_file.txtund fügt zusätzlichen Text am Ende der Datei ein. Welchen Befehl würdet ihr verwenden, ummy_file.txtzu öffnen? Welchen Befehl würdet ihr verwenden, um die Datei erneut zu öffnen und von Anfang an zu lesen?Welche Anwendungsfälle könnt ihr euch vorstellen, in denen das
struct-Modul für das Lesen oder Schreiben von Binärdaten nützlich wäre?Warum könnte pickle für die folgenden Anwendungsfälle geeignet sein oder auch nicht:
Speichern einiger Zustandsvariablen von einem Durchlauf zum nächsten
Aufbewahren von Auswertungsergebnissen
Speichern von Benutzernamen und Passwörtern
Speichern eines großen Wörterbuchs mit englischen Begriffen
Wenn ihr euch die Manpage für das wc-Dienstprogramm anseht, seht ihr zwei Befehlszeilenoptionen:
-czählt die Bytes in der Datei
-mzählt die Zeichen, die im Falle einiger Unicode-Zeichen zwei oder mehr Bytes lang sein können
Außerdem sollte unser Modul, wenn eine Datei angegeben wird, aus dieser Datei lesen und sie verarbeiten, aber wenn keine Datei angegeben wird, sollte es aus
stdinlesen und verarbeiten.Schreibt eure Version des
wc-Dienstprogramms so um, dass es sowohl die Unterscheidung zwischen Bytes und Zeichen als auch die Möglichkeit, aus Dateien und von der Standardeingabe zu lesen, implementiert.Wenn ein Kontext-Manager in einem Skript verwendet wird, das mehrere Dateien liest und/oder schreibt, welche der folgenden Ansätze wäre eurer Meinung nach am besten?
Legt das gesamte Skript in einen Block, der von einer
with-Anweisung verwaltet wird.Verwendet eine
with-Anweisung für alle Lesevorgänge und eine weitere für alle Schreibvorgänge.Verwendet jedes Mal eine
with-Anweisung, wenn ihr eine Datei lest oder schreibt, d.h. für jede Zeile.Verwendet für jede Datei, die ihr lest oder schreibt, eine
with-Anweisung.
Archiviert
*.txt-Dateien aus dem aktuellen Verzeichnis im Verzeichnisarchiveals*.zip-Dateien mit dem aktuellen Datum als Dateiname.Welche Module benötigt ihr hierfür?
Schreibt eine mögliche Lösung.
Interagieren mit dem Betriebssystem¶
Modul |
Beschreibung |
|---|---|
Verschiedene Betriebssystemschnittstellen |
|
Zugang zu den Identifizierungsdaten der zugrunde liegenden Plattform |
|
Zeitzugriff und Konvertierungen |
|
Werkzeuge für die Arbeit mit Datenströmen |
|
Warten auf I/O-Abschluss |
|
Parser für Befehlszeilenoptionen |
|
Terminal-Handling für Zeichenzellen-Displays |
|
Portable Passworteingabe |
|
bietet C-kompatible Datentypen |
|
High-Level Threading-Interface |
|
Prozessbasierte Threading-Schnittstelle |
|
Verwaltung von Unterprozessen |
Verwenden von Internet-Protokollen¶
Modul |
Beschreibung |
|---|---|
Low-Level-Netzwerkschnittstelle und SSL-Wrapper für Socket-Objekte |
|
E-Mail- und MIME-Verarbeitungspaket |
|
Manipulation von Postfächern in verschiedenen Formaten |
|
|
Common Gateway Interface-Unterstützung |
WSGI-Dienstprogramme und Referenzimplementierung |
|
Öffnen und Parsen von URLs |
|
Clients für verschiedene Internetprotokolle |
|
Framework für Netzwerkserver |
|
HTTP-Server |
|
XML-RPC-Client und -Server |
Entwickeln und Debuggen¶
Modul |
Beschreibung |
|---|---|
Dokumentationsgenerator und Online-Hilfesystem |
|
Beispiele aus Python-Docstrings testen |
|
Framework für Unittests, s.a. Unittest |
|
Utility-Funktionen für Tests |
|
verfolgt die Ausführung von Python-Anweisungen |
|
Python-Debugger |
|
Protokollierungsfunktion für Python |
|
misst die Ausführungszeit von kleinen Codeschnipseln |
|
Python-Profiler |
|
Systemspezifische Parameter und Funktionen |
|
Funktionen des Python-Garbage-Collectors |
|
inspiziert Objekte live |
|
Exit-Handler |
|
Zukünftige Statement-Definitionen |
|
|
erlaubt den Zugriff auf die Import-Interna |
importiert von Modulen aus Zip-Archiven |
|
findet Module, die von einem Skript verwendet werden |