• EOL

Python. Rezepturen. 3. Auflage - David Beazley, Brian K. Jones

Index: KSZ-02306

Übersetzung: Tomasz Walczak . Verlag: Helion. Das Buch beschreibt bewährte Wege zur Lösung der häufigsten Probleme, die beim Programmieren in Phyton auftreten .

Python. Rezepturen. 3. Auflage - David Beazley, Brian K. Jones
21,09 €
20,08 € zzgl. MwSt.
Nicht zugänglich
Auslaufprodukt
PayPal Bezahlung
Hersteller: Helion

Warnung!

Der Verkauf des Produkts ist abgeschlossen. Sehen Sie sich andere Geräte in dieser Kategorie an .

Beschreibung

Das Buch ist die dritte Auflage der beliebten „Rezepte“-Reihe, in der Sie erprobte Lösungsansätze für die häufigsten Probleme finden, die beim Programmieren in der Sprache Phyton auftreten.

Aus der Lektüre lernen Sie, wie Sie Programme, die in der älteren Version der Sprache Phyton 2 geschrieben wurden, auf die neuere - Phyton 3 - aktualisieren. Darüber hinaus lernen Sie, wie Sie effektiv mit ganzen Zahlen, Datenstrukturen und Zeichenfolgen arbeiten. In diesem Punkt finden Sie auch Informationen zum Erstellen eigener Funktionen und zum Zugriff auf Dateien und das Netzwerk. Sie lernen auch, wie Sie Iteratoren und Generatoren verwenden. Jedes „Rezept“ enthält ein Codebeispiel, das Sie in Ihren eigenen Projekten verwenden können, zusammen mit einem Kommentar und einer Erklärung, wie der Code funktioniert.

Im Buch verwendete Beispielprojekte stehen zum Download zur Verfügung . Ein Auszug aus dem Buch zum Online-Lesen .

Inhalt

Vorwort (11)

1. Algorithmen und Datenstrukturen (15)

  • 1.1. Extrahieren von Sequenzen in separate Variablen
  • 1.2. Extrahieren von Elementen aus iterierbaren Objekten beliebiger Länge (16)
  • 1.3. Speichern der letzten N Elemente (19)
  • 1.4. Suche nach dem N größten oder kleinsten Element (20)
  • 1.5. Erstellen einer Prioritätswarteschlange 22
  • 1.6. Zuordnung von Schlüsseln zu verschiedenen Wörterbuchwerten (24)
  • 1.7. Bestimmung der Reihenfolge in Wörterbüchern (25)
  • 1.8. Berechnungen mit den Daten aus Wörterbüchern (26)
  • 1.9. Suchen nach identischen Daten in zwei Wörterbüchern (28)
  • 1.10. Entfernen von Wiederholungen aus Sequenzen unter Beibehaltung der Reihenfolge der Elemente (29)
  • 1.11. Namensclips (30)
  • 1.12. Identifizieren der häufigsten Elemente in einer Sequenz (31)
  • 1.13. Wörterbuchlisten nach gemeinsamen Schlüsseln sortieren (33)
  • 1.14. Sortieren von Objekten ohne integrierte Vergleichsunterstützung
  • 1.15. Gruppieren von Datensätzen basierend auf einem Feldwert 35
  • 1.16. Filtern Sie die Elemente einer Sequenz
  • 1.17. Abrufen einer Teilmenge eines Wörterbuchs
  • 1.18. Zuordnung von Namen zu Sequenzelementen 40
  • 1.19. Gleichzeitige Datentransformation und -reduktion 42
  • 1.20. Kombinieren mehrerer Mappings zu einem (43)

2. Zeichenfolgen und Text (47)

  • 2.1. Aufteilen von Zeichenfolgen, wenn eines der verschiedenen Trennzeichen erkannt wird (47)
  • 2.2. Abgleichen von Text mit dem Anfangs- oder Endteil einer Zeichenfolge 48
  • 2.3. Abgleich von Zeichenketten mit Shell-Wildcards 50
  • 2.4. Textmusterabgleich und Suche 51
  • 2.5. Text suchen und ersetzen (54)
  • 2.6. Suchen und Ersetzen von Text ohne Berücksichtigung der Groß-/Kleinschreibung (55)
  • 2.7. Erstellen regulärer Ausdrücke für die kürzeste Übereinstimmung 56
  • 2.8. Erstellen Sie reguläre Ausdrücke, um mehrzeilige Muster zu finden 57
  • 2.9. Konvertieren von Unicode-Text in Standardform 58
  • 2.10. Verwenden von Unicode-Zeichen in regulären Ausdrücken 60
  • 2.11. Unerwünschte Zeichen aus Zeichenfolgen entfernen 61
  • 2.12. Korrektheit sicherstellen und Text bestellen (62)
  • 2.13. Saiten ausrichten 64
  • 2.14. Saiten kombinieren 66
  • 2.15. Ersetzen von Werten für Variablen in Strings 68
  • 2.16. Text formatieren, um eine bestimmte Anzahl von Spalten zu erhalten 70
  • 2.17. Umgang mit HTML- und XML-Entitäten in Text 71
  • 2.18. Text in Tokens aufteilen (73)
  • 2.19. Erstellen eines einfachen rekursiven Down-Top-Parsers
  • 2.20. Durchführen von Textoperationen an Byte-Strings

3. Zahlen, Daten und Uhrzeit (87)

  • 3.1. Zahlen runden (87)
  • 3.2. Genaue Dezimalzahlen ausführen 88
  • 3.3. Formatzahlen für Anzeige 90
  • 3.4. Verwenden von binären, oktalen und hexadezimalen Ganzzahlen 92
  • 3.5. Packen in Bytes und Extrahieren großer Ganzzahlen aus Bytes 93
  • 3.6. Berechnungen mit komplexen Zahlen durchführen 95
  • 3.7. Infinity- und NaN-Werte (96)
  • 3.8. Rechnen mit Brüchen 98
  • 3.9. Rechnen mit großen Zahlenfeldern 99
  • 3.10. Durchführen von Matrix- und Bereichsoperationen 102
  • 3.11. Artikel zufällig herunterladen (103)
  • 3.12. Umrechnung von Tagen in Sekunden und andere grundlegende zeitbezogene Umrechnungen 105
  • 3.13. Angabe des letzten Freitagdatums 107
  • 3.14. Festlegen eines Datumsbereichs, der dem aktuellen Monat entspricht 108
  • 3.15. Konvertieren von Strings in Datetime-Objekte 110
  • 3.16. Manipulation von Daten in Bezug auf Zeitzonen (111)

4. Iteratoren und Generatoren (113)

  • 4.1. Manuell mit einem Iterator
  • 4.2. Delegieren des Iterationsprozesses 114
  • 4.3. Erstellen neuer Iterationsmuster mit Generatoren 115
  • 4.4. Implementieren eines Iteratorprotokolls 117
  • 4.5. Rückwärts iterieren 119
  • 4.6. Definieren zusätzlicher Zustandsgeneratorfunktionen 120
  • 4.7. Abrufen von Datensegmenten, die von einem Iterator zurückgegeben werden
  • 4.8. Überspringen des ersten Teils eines iterierbaren Objekts 122
  • 4.9. Iteration über alle möglichen Kombinationen oder Permutationen 124
  • 4.10. Index - Sequenzwertpaarung 125
  • 4.11. Gleichzeitiges Durchlaufen mehrerer Sequenzen 127
  • 4.12. Navigieren durch Elemente aus separaten Containern 129
  • 4.13. Erstellen von Datenverarbeitungspipelines 130
  • 4.14. Verschachtelte Sequenzen in eine Dimension umwandeln 133
  • 4.15. Zusammengeführte sortierte iterierbare Objekte entsprechend der Sortierreihenfolge durchlaufen 134
  • 4.16. Unendliche While-Schleifen durch einen Iterator ersetzen 135

5. Dateien und E / A

  • 5.1. Lesen und Schreiben von Textdaten (137)
  • 5.2. Daten von print() in eine Datei speichern 139
  • 5.3. Verwenden von benutzerdefinierten Trennzeichen oder Zeilenende in einer Druckfunktion () 140
  • 5.4. Lesen und Schreiben von Binärdaten (141)
  • 5.5. Schreiben von Daten in eine Datei, die nicht existiert 142
  • 5.6. I/O auf Strings ausführen 143
  • 5.7. Lesen und Schreiben komprimierter Datendateien 144
  • 5.8. Sich durch Datensätze mit fester Größe bewegen 145
  • 5.9. Lesen von Binärdaten in einen Variablenpuffer 146
  • 5.10. Zuordnen von Binärdateien zum Speicher 148
  • 5.11. Manipulieren von Pfaden 150
  • 5.12. Prüfen, ob eine Datei existiert 151
  • 5.13. Herunterladen einer Verzeichnisliste
  • 5.14. Ignorieren der Dateinamenkodierung 153
  • 5.15. Anzeige ungültiger Dateinamen
  • 5.16. Hinzufügen oder Ändern der Kodierung einer geöffneten Datei
  • 5.17. Bytes in eine Textdatei schreiben 158
  • 5.18. Platzieren eines vorhandenen Dateideskriptors in einem Dateiobjekt
  • 5.19. Temporäre Dateien und Verzeichnisse erstellen
  • 5.20. Kommunikation mit seriellen Ports
  • 5.21. Python-Objekte serialisieren 163

6. Datenverschlüsselung und -verarbeitung (167)

  • 6.1. Laden und Schreiben von CSV-Daten 167
  • 6.2. Lesen und Schreiben von Daten im JSON-Format 170
  • 6.3. Parsen einfacher XML-Daten 174
  • 6.4. Progressives Parsen sehr großer XML-Dateien
  • 6.5. Konvertieren von Wörterbüchern in XML 179
  • 6.6. Analysieren, Ändern und Umschreiben von XML-Dokumenten 181
  • 6.7. Analysieren von XML-Dokumenten mit Namespaces 183
  • 6.8. Kommunikation mit relationalen Datenbanken 185
  • 6.9. Hex-Decodierung und -Codierung (187)
  • 6.10. Dekodieren und kodieren Sie Base64-Werte 188
  • 6.11. Lesen und Schreiben von binären Arrays, die Strukturen enthalten 188
  • 6.12. Laden verschachtelter binärer Strukturen variabler Länge 192
  • 6.13. Daten zusammenfassen und Statistiken berechnen

7. Funktionen (203)

  • 7.1. Schreiben von Funktionen, die eine beliebige Anzahl von Argumenten annehmen 203
  • 7.2. Funktionen erstellen, die Argumente annehmen, die nur mit Schlüsselwörtern übergeben werden 204
  • 7.3. Anhängen von Metadaten mit Informationen an Funktionsargumente 205
  • 7.4. Rückgabe mehrerer Werte durch Funktionen
  • 7.5. Definieren einer Funktion mit Standardargumenten 207
  • 7.6. Anonyme (Inline-)Funktionen definieren 210
  • 7.7. Abrufen von Variablenwerten in anonymen Funktionen
  • 7.8. Ausführen eines N-Arguments mit weniger Argumenten
  • 7.9. Klassen mit einer Methode durch Funktionen ersetzen 215
  • 7.10. Zusätzlicher Status in Callback-Funktionen 216
  • 7.11. Inline-Schreiben von Callback-Funktionen 219
  • 7.12. Zugriff auf Variablen, die in einer Closure definiert sind

8. Klassen und Objekte 225

  • 8.1. Ändern der Textdarstellung von Objekten 225
  • 8.2. Ändern der Zeichenfolgenformatierung 226
  • 8.3. Hinzufügen eines Kontextverwaltungsprotokolls zu Objekten 228
  • 8.4. Reduzieren des Speicherverbrauchs beim Erstellen einer großen Anzahl von Objekten 230
  • 8.5. Einkapseln von Namen in einer Klasse
  • 8.6. Verwaltete Attribute erstellen 232
  • 8.7. Aufrufen von Basisklassenmethoden 236
  • 8.8. Erweitern einer Eigenschaft in einer abgeleiteten Klasse 240
  • 8.9. Erstellen einer neuen Art von Klassen- oder Instanzattributen 243
  • 8.10. Anwenden von faul berechneten Eigenschaften 246
  • 8.11. Vereinfachung der Initialisierung von Datenstrukturen 248
  • 8.12. Definieren einer Schnittstelle oder abstrakten Basisklasse 251
  • 8.13. Erstellen eines Datenmodells oder Typsystems
  • 8.14. Benutzerdefinierte Container erstellen 259
  • 8.15. Delegieren des Zugriffs auf Attribute
  • 8.16. Mehr als einen Konstruktor in einer Klasse definieren
  • 8.17. Erstellen von Objekten ohne Aufrufen von __init __ () 267
  • 8.18. Erweiterung einer Klasse mit gemischten Klassen 269
  • 8.19. Implementieren von Zustandsobjekten oder Zustandsmaschinen 273
  • 8.20. Aufrufen von Objektmethoden basierend auf einem Zeichenfolgennamen 278
  • 8.21. Implementieren des Besuchermusters
  • 8.22. Implementieren des Besuchermusters ohne Rekursion
  • 8.23. Speicherverwaltung in zyklischen Datenstrukturen 288
  • 8.24. Vergleichsfähige Klassen erstellen 291
  • 8.25. Zwischengespeicherte Objekte erstellen 293

9. Metaprogrammierung (297)

  • 9.1. Overlays für Funktionen erstellen 297
  • 9.2. Beibehalten von Funktionsmetadaten beim Schreiben von Decorators
  • 9.3. Abrufen der primären Funktion aus dem Overlay
  • 9.4. Dekorierer erstellen, die Argumente annehmen 302
  • 9.5. Definieren eines Decorators mit benutzerdefinierbaren Attributen 303
  • 9.6. Definieren von Dekorateuren, die ein optionales Argument annehmen 306
  • 9.7. Typüberprüfung von Funktionen mit einem Decorator erzwingen
  • 9.8. Dekorateure als Elemente einer Klasse definieren 311
  • 9.9. Dekorateure als Klassen definieren 312
  • 9.10. Anwenden von Decorators auf Klassenmethoden und statische Methoden
  • 9.11. Schreiben von Decorators, die Argumente zu Funktionen in Overlays hinzufügen 316
  • 9.12. Verwenden von Decorators zum Korrigieren von Klassendefinitionen 319
  • 9.13. Verwenden einer Metaklasse zum Steuern der Objekterstellung
  • 9.14. Überprüfen der Reihenfolge der Definition von Klassenattributen
  • 9.15. Definieren von Metaklassen, die optionale Argumente akzeptieren
  • 9.16. Überprüfung der Signatur mit den Argumenten * args und ** kwargs
  • 9.17. Durchsetzung von Konventionen zum Schreiben von Code in einer Klasse
  • 9.18. Klassen programmgesteuert definieren
  • 9.19. Initialisieren von Klassenmitgliedern bei der Klassendefinition
  • 9.20. Überladen von Methoden mit Funktionshinweisen
  • 9.21. Vermeiden doppelter Eigenschaftsmethoden 342
  • 9.22. Einfaches Definieren von Kontextmanagern
  • 9.23. Ausführen von Code mit lokalen Nebeneffekten 346
  • 9.24. Parsen und Analysieren von Python-Quellen
  • 9.25. Python-Byte-Code zerlegen

10. Module und Pakete (355)

  • 10.1. Hierarchische Pakete mit Modulen erstellen 355
  • 10.2. Steuern des Imports aller Symbole 356
  • 10.3. Importieren von Submodulen aus einem Paket mit relativen Namen
  • 10.4. Aufteilen eines Moduls in mehrere Dateien 358
  • 10.5. Erstellen separater Verzeichnisse mit importiertem Code aus einem Namespace
  • 10.6. Module neu laden
  • 10.7. Aktivieren der Codeausführung aus einem Verzeichnis oder einer Zip-Datei als Ihr Hauptskript
  • 10.8. Laden einer Paketdatendatei (365)
  • 10.9. Hinzufügen von Verzeichnissen zur sys.path-Variablen 366
  • 10.10. Importieren von Modulen nach Name in einem String 367
  • 10.11. Laden von Modulen von einem Remote-Computer mithilfe von Hooks im Import-Befehl
  • 10.12. Ändern von Modulen während des Imports
  • 10.13. Installieren von Paketen nur für den persönlichen Gebrauch
  • 10.14. Erstellen einer neuen Python-Umgebung
  • 10.15. Pakete verteilen

11. Networking und Entwicklung von Webanwendungen (389)

  • 11.1. Interaktion mit HTTP-Diensten unter Verwendung von Client-Code 389
  • 11.2. Erstellen eines TCP-Servers
  • 11.3. Erstellen eines UDP-Servers
  • 11.4. Generieren von IP-Adressbereichen aus einer CIDR-Adresse
  • 11.5. Erstellen einer einfachen REST-basierten Schnittstelle 399
  • 11.6. Umgang mit einfachen Remote Procedure Calls mit XML-RPC
  • 11.7. Einfache Kommunikation zwischen Dolmetschern 405
  • 11.8. Implementieren von Remoteprozeduraufrufen
  • 11.9. Einfache Client-Authentifizierung
  • 11.10. Hinzufügen von SSL-Unterstützung zu Webdiensten
  • 11.11. Übergeben des Socket-Dateideskriptors zwischen Prozessen
  • 11.12. Ereignisgesteuerte E / A-Operationen
  • 11.13. Senden und Empfangen großer Arrays 427

12. Gleichzeitigkeit 429

  • 12.1. Threads starten und stoppen 429
  • 12.2. Bestimmen, ob ein Thread gestartet wurde 432
  • 12.3. Kommunikation zwischen Threads 434
  • 12.4. Sperren des kritischen Abschnitts 439
  • 12.5. Sperren Vermeidung von Deadlocks
  • 12.6. Speichern des Thread-Status 445
  • 12.7. Erstellen eines Thread-Pools 446
  • 12.8. Einfache parallele Programmierung 449
  • 12.9. Wie man damit umgeht (und aufhört, sich um die GIL zu sorgen) 453
  • 12.10. Aufgaben definieren, die als Akteure agieren 456
  • 12.11. Publish-Subscribe-Messaging 459
  • 12.12. Verwenden von Generatoren anstelle von Threads 462
  • 12.13. Abfragen mehrerer Thread-Warteschlangen
  • 12.14. Ausführen des Daemon-Prozesses unter Unix 471

13. Dienstprogrammskripte und Systemverwaltung (475)

  • 13.1. Akzeptieren von Skripteingaben unter Verwendung von Umleitung, Pipes oder Eingabedateien 475
  • 13.2. Beenden des Programms mit Fehlermeldung (476)
  • 13.3. Parsing-Optionen von der Befehlszeile
  • 13.4. Anfordern eines Kennworts zur Laufzeit (479)
  • 13.5. Abrufen von Terminalgrößen
  • 13.6. Aufrufen externer Befehle und Abrufen der Ausgabe 481
  • 13.7. Dateien und Verzeichnisse kopieren oder verschieben 482
  • 13.8. Archive erstellen und extrahieren (484)
  • 13.9. Dateien nach Namen suchen (485)
  • 13.10. Konfigurationsdateien laden 486
  • 13.11. Hinzufügen eines Aktionsaufzeichnungsmechanismus zu einfachen Skripten 489
  • 13.12. Hinzufügen von Protokollierungsunterstützung zu Bibliotheken
  • 13.13. Erstellen einer Stoppuhr 493
  • 13.14. Begrenzung der Speicher- und CPU-Nutzung 494
  • 13.15. Starten des Webbrowsers (495)

14. Testen, Debuggen und Ausnahmen 497

  • 14.1. Testen der Ausgabe an den Stdout-Stream 497
  • 14.2. Ersetzen von Objekten in Komponententests
  • 14.3. Prüfung auf Ausnahmen in Einheitentests 501
  • 14.4. Testausgabe in einer Datei speichern 503
  • 14.5. Überspringen von Tests oder Vorhersagen eines Testversagens 504
  • 14.6. Umgang mit mehreren Ausnahmen
  • 14.7. Alle Ausnahmen abfangen 507
  • 14.8. Benutzerdefinierte Ausnahmen erstellen 508
  • 14.9. Auslösen einer Ausnahme als Antwort auf eine andere Ausnahme 510
  • 14.10. Abrufen der letzten Ausnahme 512
  • 14.11. Anzeige von Warnmeldungen (513)
  • 14.12. Debuggen einfacher Programmabstürze
  • 14.13. Profiling und Messprogrammlaufzeit (516)
  • 14.14. Beschleunigung Ihrer Programme 518

15. C-Erweiterungen 525

  • 15.1. Zugreifen auf C-Code unter Verwendung des ctypes-Moduls 526
  • 15.2. Einfache Erweiterungsmodule in C schreiben
  • 15.3. Schreiben von Erweiterungsfunktionen zum Manipulieren von Arrays 535
  • 15.4. Verwalten von undurchsichtigen Zeigern in C-Erweiterungsmodulen
  • 15.5. Definieren und Exportieren von C-APIs in Erweiterungsmodulen
  • 15.6. Aufrufen von Python aus C-Code 544
  • 15.7. Freigeben einer GIL-Sperre für C-Erweiterungen
  • 15.8. Gleichzeitiges Threading von C und Python Code 549
  • 15.9. Einfügen von C-Code in Swig-basierte Overlays 550
  • 15.10. Verwenden von Cython zum Überlagern von vorhandenem C-Code 555
  • 15.11. Verwenden von Cython zum Schreiben effizienter Array-Operationen 560
  • 15.12. Konvertieren eines Zeigers auf eine Funktion in eine aufrufbare Einheit
  • 15.13. NULL-terminierte Strings an C-Bibliotheken übergeben
  • 15.14. Übergeben von Unicode-Strings an C-Bibliotheken
  • 15.15. Konvertieren von Strings von C in ihre Python-Äquivalente 573
  • 15.16. Verwenden unbekannter Codierungszeichenfolgen aus C-Rezept 574
  • 15.17. Übergeben von Dateinamen an C-Spracherweiterungen
  • 15.18. Offene Dateien an C-Spracherweiterungen übergeben
  • 15.19. Laden von Daten aus dateiähnlichen Objekten in C
  • 15.20. Iterierbare Objekte in C erhalten
  • 15.21. Segmentierungsfehler diagnostizieren 582

A. Weiterführende Literatur (585)

Index (587)

Buch - Autor David Beazley, Brian K. Jones
Buch - ISBN 978-83-246-8180-8
Buch - Bindung Sanft
Buchverleger Helion
PAKETBREITE 0.001 cm
PAKETHÖHE 0.001 cm
PAKETTIEFE 0.001 cm
PAKETGEWICHT 0.001 kg

Seien Sie der Erste, der eine Frage zu diesem Produkt stellt!

Kunden, die diesen Artikel gekauft haben, kauften auch:

Produkte aus der gleichen Kategorie: