O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Python 3

Book Description

Python ist eine universelle, objektorientierte Programmiersprache. Der Interpreter ermöglicht einen spielerischen Einstieg in die Programmierung und Python ist auf vielen Plattformen verfügbar. Die klare Syntax, kombiniert mit den mächtigen Erweiterungen in der Standardbibliothek, ermöglicht kurze, gut lesbare Programme.

Das Buch führt in die Anweisungen und Syntax von Python 3 ein, um dann Module aus der Standardbibliothek und deren Anwendung an Hand von einfachen Beispielen vorzustellen. Behandelt werden unter anderem der Umgang mit Dateien, Arbeiten mit Datum und Uhrzeit, Verarbeitung von Kommandozeilenparametern, Netzwerkprogrammierung mit Sockets, die Nutzung von verschiedenen Internetprotokollen (HTTP, SMTP, POP3), Multithreading und Multitasking. Eingegangen wird ebenso auf dateibasierte Datenbanken mit SQLite, die Datenbanken PostgreSQL und MySQL, reguläre Ausdrücke, Zufallszahlen und mathematische Funktionen, Umgang mit Binärdaten, Serialisierung von Python-Typen und Daten sowie das Testen von Programmen.

Der Leser wird dadurch in die Lage versetzt, die verschiedensten Aufgaben aus der täglichen Programmierpraxis zu lösen.

Table of Contents

  1. Cover
  2. Weitere empfehlenswerte Titel
  3. Titelseite
  4. Impressum
  5. Vorwort
  6. Inhalt
  7. Teil I: Die Programmiersprache Python
    1. 1 Einleitung
      1. 1.1 Konventionen in diesem Text
      2. 1.2 Programmieren
      3. 1.3 Der Python-Interpreter
      4. 1.4 Kommentare
      5. 1.5 Einrückung und Leerzeichen
      6. 1.6 Fehlermeldungen
      7. 1.7 Nichts tun: pass
      8. 1.8 Eingebaute Funktionen
      9. 1.9 Funktionen nachladen: import
      10. 1.10 Variablen
      11. 1.11 Gültige Variablennamen
      12. 1.12 Ausgeben von Variablen
      13. 1.13 Eingebaute Hilfen
    2. 2 Eingebaute Objekttypen
      1. 2.1 Zahlen
        1. 2.1.1 Mathematische Operatoren
        2. 2.1.2 Bit-Operatoren
        3. 2.1.3 Vergleichsoperatoren
        4. 2.1.4 Kurzschreibweisen von Operatoren
      2. 2.2 Zeichenketten
      3. 2.3 Listen
      4. 2.4 Tupel
      5. 2.5 Range
      6. 2.6 Operationen auf Sequenztypen
        1. 2.6.1 Index-Zugriff
        2. 2.6.2 Slicing
        3. 2.6.3 Addition, Multiplikation und andere Funktionen
      7. 2.7 Dictionarys
      8. 2.8 Set und Frozenset
      9. 2.9 Erzeugung von Listen, Sets und Dictionarys
      10. 2.10 File-Objekte
      11. 2.11 Binärdaten
        1. 2.11.1 Unveränderbare Byte-Folgen: bytes
        2. 2.11.2 Veränderbare Byte-Folgen: bytearray
        3. 2.11.3 Daten in bytes und bytearray manipulieren
    3. 3 Fehlerbehandlung
      1. 3.1 Fehler mit try ... except fangen
      2. 3.2 Verschiedene Fehler fangen
      3. 3.3 Alle Fehler fangen
      4. 3.4 Weiter ohne Fehler: try ... except ... else
      5. 3.5 Dinge auf jeden Fall ausführen: finally
      6. 3.6 Mehr über den Fehler erfahren
      7. 3.7 Einen Fehler auslösen
    4. 4 Ein- und Ausgabe
      1. 4.1 Eingabe mit input()
      2. 4.2 Ausgabe
        1. 4.2.1 Strings formatieren mit format()
        2. 4.2.2 Formatierung mit Formatstrings (Old String Formatting)
        3. 4.2.3 Ausgabe auf stdout oder stderr
        4. 4.2.4 Ausgabe mit print in eine Datei
      3. 4.3 Dateien
        1. 4.3.1 Arbeiten mit Dateien
        2. 4.3.2 Textdateien
        3. 4.3.3 Binärdateien
        4. 4.3.4 Daten in Objekte ausgeben
        5. 4.3.5 Fehlerbehandlung bei der Arbeit mit Dateien
    5. 5 Steuerung des Programmablaufs
      1. 5.1 True, False, Leere Objekte und None
      2. 5.2 Objektvergleich und Wertvergleich
      3. 5.3 Boolesche Operatoren
      4. 5.4 Bedingte Ausführung: if
      5. 5.5 Mehrere Bedingungen: elif und else
      6. 5.6 Objektabhängige Ausführung: with
      7. 5.7 Bedingter Ausdruck
    6. 6 Schleifen
      1. 6.1 Zählschleife: for
      2. 6.2 Bedingte Schleife: while
      3. 6.3 Unterbrechung einer Schleife: break
      4. 6.4 Neustart der Schleife: continue
    7. 7 Funktionen
      1. 7.1 Definieren und Aufrufen von Funktionen
      2. 7.2 Sichtbarkeit von Variablen
      3. 7.3 Funktionsparameter
        1. 7.3.1 Positionsabhängige Parameter
        2. 7.3.2 Variable Anzahl von Parametern
        3. 7.3.3 Keyword Parameter
      4. 7.4 Defaultwerte für Funktionsparameter
      5. 7.5 Rückgabewert einer Funktion
      6. 7.6 Manipulation von Argumenten
      7. 7.7 Dokumentation im Programm: Docstring
      8. 7.8 Geschachtelte Funktionen
    8. 8 Funktionales
      1. 8.1 Lambda-Funktionen
      2. 8.2 Funktionen auf Sequenzen ausführen: map()
      3. 8.3 Daten aus einer Sequenz extrahieren: filter()
      4. 8.4 Das Modul functools
    9. 9 Module
      1. 9.1 Laden eines Moduls
        1. 9.1.1 Selektives Laden aus einem Modul
        2. 9.1.2 Umbenennen eines Moduls beim Import
      2. 9.2 Ein Modul erstellen
      3. 9.3 Wo werden Module gesucht?
      4. 9.4 Fehler beim Importieren
      5. 9.5 Ein Modul ist auch ein Programm
      6. 9.6 Neu laden eines Moduls
      7. 9.7 Mehrere Module – Ein Package
    10. 10 Objekte
      1. 10.1 Definition von Klassen
      2. 10.2 Methoden
      3. 10.3 Attribute
      4. 10.4 Von der Klasse zum Objekt
        1. 10.4.1 Ein Objekt initialisieren: Der Konstruktor
        2. 10.4.2 Überladen von Funktionen
      5. 10.5 Klassenvariablen
      6. 10.6 Vererbung
        1. 10.6.1 Einfache Vererbung
        2. 10.6.2 Von eingebauten Klassen erben
        3. 10.6.3 Mehrfachvererbung
    11. 11 Objekte unter der Lupe
      1. 11.1 Typ einer Variablen
      2. 11.2 Attribute eines Objekts
      3. 11.3 Standardfunktionen implementieren
        1. 11.3.1 Vergleichsoperatoren
        2. 11.3.2 Attributzugriff
        3. 11.3.3 Verhalten von Containertypen
        4. 11.3.4 Mathematische Operatoren
        5. 11.3.5 Sonstige Operatoren und Konvertierungs-Funktionen
      4. 11.4 Objekte aufrufen
      5. 11.5 Darstellung eines Objekts als Zeichenkette
      6. 11.6 Informationen über Objekte sammeln
      7. 11.7 Attribute managen: Propertys
      8. 11.8 Deskriptoren
      9. 11.9 Dekoratoren
        1. 11.9.1 Die zu dekorierende Funktion
        2. 11.9.2 Eine Funktion als Dekorator
        3. 11.9.3 Den Dekorator tarnen
        4. 11.9.4 Objekt als Dekorator
      10. 11.10 Iteratoren
      11. 11.11 Generatoren
      12. 11.12 Context Manager
      13. 11.13 Exceptions
    12. 12 Mehr zu Namensräumen
      1. 12.1 Implizite Variablensuche
      2. 12.2 Explizite Variablensuche: global und nonlocal
  8. Teil II: Batterien enthalten
    1. 13 Collections
      1. 13.1 deque
      2. 13.2 ChainMap
      3. 13.3 Counter
      4. 13.4 OrderedDict
      5. 13.5 defaultDict
      6. 13.6 UserDict, UserList und UserString
      7. 13.7 namedtuple
    2. 14 Datum und Uhrzeit
      1. 14.1 UNIX-Zeit: time
        1. 14.1.1 Ausgeben einer Zeit
        2. 14.1.2 Einlesen einer Zeit
        3. 14.1.3 Schlafen
      2. 14.2 Das Modul datetime
        1. 14.2.1 Datum: datetime.date
        2. 14.2.2 Uhrzeit: datetime.time
        3. 14.2.3 Zeitdifferenz/Zeitzone: datetime.timedelta/datetime.timezone
        4. 14.2.4 Datum und Uhrzeit: datetime.datetime
    3. 15 Dateien und Verzeichnisse
      1. 15.1 Systemunabhängiger Zugriff mit pathlib
        1. 15.1.1 Die Klasse Path
        2. 15.1.2 Methoden von Pure-Pfad-Objekten
        3. 15.1.3 Methoden von konkreten Pfad-Objekten
      2. 15.2 OS-spezifischer Zugriff mit os.path
      3. 15.3 Temporäre Dateien erzeugen
    4. 16 Reguläre Ausdrücke
      1. 16.1 Text beschreiben
      2. 16.2 Pattern Matching
        1. 16.2.1 Steuerung des Matching
        2. 16.2.2 Individuelle Parameter für eine Gruppe
      3. 16.3 Suchen und Ersetzen
      4. 16.4 Referenzen auf gefundenen Text
      5. 16.5 Regular Expression Objects
      6. 16.6 Funktionen, Konstanten und Ausnahmen des Moduls
    5. 17 Zufallszahlen
      1. 17.1 Das Modul random
      2. 17.2 Einfache Zufallszahlen
      3. 17.3 Zahlen aus einem Bereich
      4. 17.4 Auswahl aus einer Menge und Mischen
      5. 17.5 Zufallszahlen mit der Klasse SystemRandom
      6. 17.6 Verteilungsfunktionen
    6. 18 Netzwerkprogrammierung mit Sockets
      1. 18.1 Kommunikation im Internet
        1. 18.1.1 Ein Socket-Server mit UDP
        2. 18.1.2 Ein Socket-Client mit UDP
        3. 18.1.3 UDP-Client und Server bei der Arbeit
        4. 18.1.4 Ein Socket-Server mit TCP
        5. 18.1.5 Ein Socket-Client mit TCP
        6. 18.1.6 TCP-Client und Server bei der Arbeit
      2. 18.2 UNIX-Sockets
        1. 18.2.1 TCP UNIX-Socket
        2. 18.2.2 UDP UNIX-Socket
        3. 18.2.3 Client und Server mit UDP UNIX-Socket bei der Arbeit
      3. 18.3 Mehrere Verbindungen über einen Socket
    7. 19 Automatisches Testen mit doctest
      1. 19.1 Doctest anwenden
      2. 19.2 Doctest in ein Programm einfügen
      3. 19.3 Umgang mit variablen Ausgaben
      4. 19.4 Auslagern des Tests in eine Datei
    8. 20 Iteratoren und funktionale Programmierung
      1. 20.1 Erzeugung von Iteratoren mit itertools
        1. 20.1.1 Endlosschleifen
        2. 20.1.2 Sequenzfilter
        3. 20.1.3 Permutationen
      2. 20.2 Tools für Funktionen functools
    9. 21 Binärdaten und Codierungen
      1. 21.1 Binärstrukturen bearbeiten mit struct
      2. 21.2 Transportcodierung mit base64
      3. 21.3 Objekte Serialisieren
        1. 21.3.1 Python-Objekte serialisieren mit pickle
        2. 21.3.2 Daten serialisieren mit json
    10. 22 Internetprotokolle
      1. 22.1 Ein Webserver in Python
        1. 22.1.1 Webserver für statische Seiten
        2. 22.1.2 Server für dynamische Seiten
        3. 22.1.3 Daten auf dem Webserver empfangen und verarbeiten
      2. 22.2 Webseiten mit einem Programm holen
        1. 22.2.1 Eine Webseite holen mit urlopen()
        2. 22.2.2 Die Klasse Request
      3. 22.3 Bearbeiten von URLs
        1. 22.3.1 Aufbauen einer URL
        2. 22.3.2 Zerlegen einer URL
      4. 22.4 E-Mail senden mit smtplib
        1. 22.4.1 Versenden einer Mail
        2. 22.4.2 Header zu einer Nachricht hinzufügen
        3. 22.4.3 Verschlüsselter Mailversand
      5. 22.5 E-Mail erstellen mit dem Modul email
        1. 22.5.1 Header zu einer Nachricht hinzufügen
        2. 22.5.2 Charset des Nachrichtentextes
        3. 22.5.3 Abfragen von Nachrichten-Headern
        4. 22.5.4 Weitere Methoden für email.message
        5. 22.5.5 Aufbau einer Multipart-Message
      6. 22.6 Multipart-Nachrichten mit email.mime
      7. 22.7 E-Mail aus einer Datei lesen
      8. 22.8 E-Mail empfangen mit poplib
        1. 22.8.1 Die Klasse POP3
        2. 22.8.2 Weiterverarbeitung empfangener Nachrichten
    11. 23 Multitasking
      1. 23.1 Das Modul threading
        1. 23.1.1 Die Klasse Thread
        2. 23.1.2 Threads als Objekt erzeugen
        3. 23.1.3 Threads identifizieren
        4. 23.1.4 Threads als abgeleitete Klasse
      2. 23.2 Größere Mengen von Threads
      3. 23.3 Synchronisation von Threads
        1. 23.3.1 Lock
        2. 23.3.2 RLock
        3. 23.3.3 Condition
        4. 23.3.4 Semaphore
        5. 23.3.5 Event
        6. 23.3.6 Timer
        7. 23.3.7 Barrier
      4. 23.4 Datenaustausch zwischen Threads
      5. 23.5 Das Modul multiprocessing
      6. 23.6 Datenaustausch zwischen Prozessen
        1. 23.6.1 Die Klasse multiprocessing. Pipe
        2. 23.6.2 Die Klasse multiprocessing. Queue
        3. 23.6.3 Shared Memory
        4. 23.6.4 Die Funktion Manager
        5. 23.6.5 Manager-Objekte erstellen und manipulieren
        6. 23.6.6 Manager-Objekte zwischen lokalen Prozessen teilen
        7. 23.6.7 BaseManager-Objekte
        8. 23.6.8 Zugriff von Manager-Objekten über das Netzwerk
    12. 24 Logging
      1. 24.1 Das Modul logging
        1. 24.1.1 Formatieren einer Logzeile
        2. 24.1.2 Konfigurieren des Loggings mit basicConfig()
        3. 24.1.3 Eigene Log-Level definieren
        4. 24.1.4 Unterdrücken eines Log-Levels
        5. 24.1.5 Funktionen im Modul logging
      2. 24.2 Objektorientiertes Logging mit logging
        1. 24.2.1 Logger-Objekte
        2. 24.2.2 Die Klasse Handler
        3. 24.2.3 Formatter-Objekte
        4. 24.2.4 Filter-Objekte
        5. 24.2.5 Ausgabe auf mehrere Kanäle gleichzeitig
        6. 24.2.6 Konfigurationsmöglichkeiten für das Logging
      3. 24.3 Logging mit syslog
        1. 24.3.1 Log-Level im Modul syslog
        2. 24.3.2 Berechnung der Bitmaske für setlogmask()
        3. 24.3.3 Log-Kanäle
        4. 24.3.4 Weitere Parameter für openlog()
        5. 24.3.5 Beispiele
    13. 25 Datenbanken
      1. 25.1 Das DB-API 2.0
        1. 25.1.1 Attribute eines Datenbankmoduls
        2. 25.1.2 Connection-Objekte
        3. 25.1.3 Cursor-Objekte
        4. 25.1.4 Exceptions
      2. 25.2 Das Modul sqlite3
        1. 25.2.1 Öffnen einer Datenbank
        2. 25.2.2 Daten definieren und abfragen
        3. 25.2.3 Transaktionen
        4. 25.2.4 Transaktionen interaktiv
        5. 25.2.5 Erweiterungen des Connection-Objekts
      3. 25.3 PostgreSQL mit psycopg2
        1. 25.3.1 Verbindung zur Datenbank
        2. 25.3.2 Parameter an Anfragen übergeben
        3. 25.3.3 Erweiterungen des Connection-Objekts
        4. 25.3.4 Transaktionen und Isolation Level
      4. 25.4 MySQL mit mysqlclient
        1. 25.4.1 Verbindung zur Datenbank
        2. 25.4.2 Parameter an Anfragen übergeben
        3. 25.4.3 Erweiterungen des Connection-Objekts
        4. 25.4.4 Cursor-Klassen
    14. 26 Diverses
      1. 26.1 math – Mathematische Funktionen
      2. 26.2 hashlib – Hashfunktionen
      3. 26.3 csv – CSV-Dateien
      4. 26.4 getpass – Passwörter eingeben
      5. 26.5 enum – Aufzählungstypen
      6. 26.6 pprint – Variablen schöner ausgeben
    15. 27 Verarbeiten von Startparametern
      1. 27.1 Zugriff auf die Startparameter mit sys
      2. 27.2 Startparameter mit argparse verarbeiten
        1. 27.2.1 Die Klasse ArgumentParser
        2. 27.2.2 Den Parser starten
        3. 27.2.3 Argumente für den Parser definieren
    16. 28 Python erweitern
      1. 28.1 Module von Drittanbietern finden
      2. 28.2 Pakete installieren mit pip
      3. 28.3 virtualenv und pyvenv
      4. 28.4 Interessante Module außerhalb der Standardlibrary
  9. Teil III: Größere Beispiele
    1. 29 Referenzzähler für Latex-Dokumente
      1. 29.1 Anforderungen
      2. 29.2 Eine Lösung
      3. 29.3 Mögliche Erweiterungen
    2. 30 Dateien und Verzeichnisse umbenennen
      1. 30.1 Anforderungen
      2. 30.2 Eine Lösung
      3. 30.3 Mögliche Erweiterungen
    3. 31 Verfügbarkeit von Webservern prüfen
      1. 31.1 Einen Webrequest stellen
      2. 31.2 Eine Klasse zum Abfragen einer URL
      3. 31.3 Webseite in einem Thread abfragen
      4. 31.4 Abfragen mehrerer Hosts
      5. 31.5 Mögliche Erweiterungen
    4. 32 Änderungen im Linux-Dateisystem überwachen – Inotify
      1. 32.1 Beschränkungen von inotify
      2. 32.2 Ereignisse im Dateisystem
      3. 32.3 Einen Eventhandler implementieren
      4. 32.4 Einrichten einer Überwachung
      5. 32.5 Überwachen von /tmp
      6. 32.6 Überwachung mehrerer Dateien/Verzeichnisse
      7. 32.7 Mögliche Erweiterung
  10. Teil IV: Anhang
    1. A Keywords, Konstanten und Module
      1. A.1 Keywords in Python
      2. A.2 Konstanten
      3. A.3 Eingebaute Funktionen
      4. A.4 Module
        1. A.4.1 Datentypen
        2. A.4.2 Mathematische Funktionen
        3. A.4.3 Verarbeitung von Text
        4. A.4.4 Dateien und Verzeichnisse
        5. A.4.5 Speicherung von Daten und Objekten
        6. A.4.6 Verschiedene Dateiformate
        7. A.4.7 Datenkomprimierung und Archivierung
        8. A.4.8 Grundlegende Funktionen
        9. A.4.9 Parallele Programmierung
        10. A.4.10 Kommunikation zwischen Prozessen
        11. A.4.11 Internet-Protokolle
        12. A.4.12 Internet-Datenformate
        13. A.4.13 XML, HTML
        14. A.4.14 Binärdaten
        15. A.4.15 Funktionale Programmierung
        16. A.4.16 Sonstiges
        17. A.4.17 Kryptografische Funktionen
        18. A.4.18 Internationalization
    2. B Onlinequellen
  11. Stichwortverzeichnis
  12. Fußnoten