Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Hier ist der Plan: Wenn jemand eine Funktion benutzt, die du nicht verstehst, erschieß ihn einfach. Das ist einfacher, als etwas Neues zu lernen, und schon bald werden die einzigen lebenden Programmierer in einer leicht verständlichen, winzigen Untermenge von Python 0.9.6 schreiben <wink>.1

Tim Peters, legendärer Kernentwickler und Autor von The Zen of Python

"Python ist eine einfach zu erlernende, leistungsstarke Programmiersprache." Das sind die ersten Worte des offiziellen Python 3.10-Tutorials. Das stimmt, aber es gibt einen Haken: Weil die Sprache leicht zu erlernen und anzuwenden ist, nutzen viele praktizierende Python-Programmierer/innen nur einen Bruchteil ihrer leistungsstarken Funktionen.

Ein erfahrener Programmierer kann schon nach wenigen Stunden anfangen, nützlichen Python-Code zu schreiben. Wenn aus den ersten produktiven Stunden Wochen und Monate werden, schreiben viele Entwicklerinnen und Entwickler Python-Code mit einem starken Akzent, der von früher erlernten Sprachen herrührt. Selbst wenn Python deine erste Sprache ist, wird sie in der Wissenschaft und in Einführungsbüchern oft unter sorgfältiger Vermeidung sprachspezifischer Merkmale vorgestellt.

Als Lehrer, der Programmierer/innen mit Erfahrung in anderen Sprachen in Python einführt, sehe ich ein weiteres Problem, das dieses Buch zu lösen versucht: Wir vermissen nur Dinge, die wir kennen. Wenn du aus einer anderen Sprache kommst, kannst du vielleicht erraten, dass Python reguläre Ausdrücke unterstützt, und das in der Dokumentation nachschlagen. Aber wenn du noch nie Tupel-Entpacker oder Deskriptoren gesehen hast, wirst du wahrscheinlich nicht danach suchen und diese Funktionen nicht nutzen, nur weil sie spezifisch für Python sind.

Dieses Buch ist keine erschöpfende Python-Referenz von A bis Z. Der Schwerpunkt liegt auf den Sprachmerkmalen, die es nur in Python gibt oder die in vielen anderen gängigen Sprachen nicht zu finden sind. Außerdem geht es in diesem Buch hauptsächlich um die Kernsprache und einige ihrer Bibliotheken. Ich werde nur selten über Pakete sprechen, die nicht in der Standardbibliothek enthalten sind, auch wenn der Python-Paketindex mittlerweile mehr als 60.000 Bibliotheken auflistet und viele davon unglaublich nützlich sind.

Für wen dieses Buch ist

Dieses Buch wurde für praktizierende Python-Programmiererinnen und -Programmierer geschrieben, die Python 3 beherrschen wollen. Ich habe die Beispiele in Python 3.10 getestet - die meisten davon auch in Python 3.9 und 3.8. Wenn ein Beispiel Python 3.10 erfordert, sollte dies deutlich gekennzeichnet sein.

Wenn du dir nicht sicher bist, ob du genug Python kennst, um mitzukommen, schau dir die Themen des offiziellenPython-Tutorials an. Themen, die im Tutorial behandelt werden, werden hier nicht erklärt, außer bei einigen neuen Funktionen.

Für wen dieses Buch nicht geeignet ist

Wenn du Python gerade erst lernst, wird es dir schwer fallen, diesem Buch zu folgen. Nicht nur das, wenn du es zu früh in deiner Python-Reise liest, könnte es dir den Eindruck vermitteln, dass jedes Python-Skript spezielle Methoden und Metaprogrammierungstricks nutzen sollte. Verfrühte Abstraktion ist genauso schlecht wie verfrühte Optimierung.

Fünf Bücher in einem

Ich empfehle jedem,Kapitel 1, "Das Python-Datenmodell", zu lesen. Die Hauptzielgruppe dieses Buches sollte keine Probleme haben, nach Kapitel 1 direkt zu einem beliebigen Teil dieses Buches zu springen, aber oft gehe ich davon aus, dass du die vorangegangenen Kapitel in jedem spezifischen Teil gelesen hast. Betrachte die Teile I bis V als Bücher innerhalb des Buches.

Ich habe versucht, den Schwerpunkt darauf zu legen, das Vorhandene zu nutzen, bevor ich erkläre, wie du deine eigenen Sequenzen erstellst. In Teil I werden in Kapitel 2 zum Beispiel Sequenztypen behandelt, die sofort einsatzbereit sind, darunter auch einige, denen nicht viel Aufmerksamkeit geschenkt wird, wie z. B. collections.deque. Die Erstellung von benutzerdefinierten Sequenzen wird erst in Teil III behandelt, wo wir auch sehen, wie wir die abstrakten Basisklassen (ABCs) von collections.abc nutzen können. Die Erstellung eigener ABCs wird sogar noch später in Teil III besprochen, denn ich glaube, es ist wichtig, dass du mit einer ABC vertraut bist, bevor du deine eigene schreibst.

Diese Herangehensweise hat einige Vorteile: Erstens erspart es dir, das Rad neu zu erfinden, wenn du weißt, was bereits vorhanden ist. Wir verwenden vorhandene Auflistungsklassen häufiger, als dass wir eigene implementieren, und wir können uns mehr auf die fortgeschrittene Nutzung vorhandener Werkzeuge konzentrieren, indem wir die Diskussion darüber, wie man neue erstellt, aufschieben. Außerdem ist es wahrscheinlicher, dass wir von vorhandenen ABCs erben, als ein neues ABC von Grund auf zu erstellen. Und schließlich glaube ich, dass es einfacher ist, die Abstraktionen zu verstehen, wenn du sie in Aktion gesehen hast.

Der Nachteil dieser Strategie sind die Vorwärtsverweise, die in den Kapiteln verstreut sind. Ich hoffe, dass diese jetzt leichter zu ertragen sind, da du weißt, warum ich diesen Weg gewählt habe.

Wie das Buch gegliedert ist

Hier sind die wichtigsten Themen in jedem Teil des Buches:

Teil I, "Datenstrukturen"

In Kapitel 1 wird das Python-Datenmodell vorgestellt und erklärt, warum die speziellen Methoden (z. B. __repr__) der Schlüssel zum konsistenten Verhalten von Objekten aller Typen sind. Die speziellen Methoden werden im Laufe des Buches noch ausführlicher behandelt. Die verbleibenden Kapitel in diesem Teil behandeln die Verwendung von Sammlungstypen: Sequenzen, Mappings und Sets sowie die Unterscheidung zwischen str und bytes - ein Grund zum Feiern für Python 3-Benutzer und zum Ärgernis für Python 2-Benutzer, die ihre Codebasen migrieren. Außerdem werden die High-Level-Klassenersteller in der Standardbibliothek behandelt: benannte Tupelfabriken und der @dataclass Dekorator. Die Anpassung von Mustern - neu in Python 3.10 - wird in den Kapiteln 2, 3 und 5 behandelt, die sich mit Sequenzmustern, Abbildungsmustern und Klassenmustern befassen. Das letzte Kapitel in Teil I befasst sich mit dem Lebenszyklus von Objekten: Referenzen, Veränderbarkeit und Speicherbereinigung.

Teil II, "Funktionen als Objekte"

Hier sprechen wir über Funktionen als Objekte erster Klasse in der Sprache: was das bedeutet, wie es sich auf einige beliebte Entwurfsmuster auswirkt und wie man Funktionsdekoratoren mit Hilfe von Closures implementiert. Außerdem geht es hier um das allgemeine Konzept von Callables in Python, Funktionsattribute, Introspektion, Parameterannotationen und die neue nonlocal Deklaration in Python 3. In Kapitel 8 wird das wichtige neue Thema der Typ-Hinweise in Funktionssignaturen vorgestellt.

Teil III, "Klassen und Protokolle"

Jetzt liegt der Schwerpunkt auf dem Erstellen von Klassen "von Hand" - im Gegensatz zu den Klassenerstellungsprogrammen, die in Kapitel 5 behandelt werden. Wie jede objektorientierte Sprache (OO-Sprache) hat auch Python eine Reihe von Besonderheiten, die in der Sprache, in der du und ich klassenbasiertes Programmieren gelernt haben, nicht unbedingt vorhanden sind. In den Kapiteln wird erklärt, wiedu deine eigenen Sammlungen, abstrakten Basisklassen (ABCs) und Protokolleerstellst,wie du mit Mehrfachvererbung umgehst und wie du dieÜberladung von Operatoren implementierst- sofern dies sinnvoll ist. In Kapitel 15 geht es weiter mit denTyp-Hinweisen.

Teil IV, "Kontrollfluss"

In diesem Teil von geht es um die Sprachkonstrukte und Bibliotheken, die über den traditionellen Kontrollfluss mit Konditionalen, Schleifen und Unterprogrammen hinausgehen. Wir beginnen mit Generatoren, dann folgen Kontextmanager und Coroutinen, einschließlich der anspruchsvollen, aber leistungsstarken neuen Syntax yield from. Kapitel 18 enthält ein aussagekräftiges Beispiel, das den Mustervergleich in einem einfachen, aber funktionalen Sprachinterpreter verwendet. Kapitel 19, "Gleichzeitigkeitsmodelle in Python", ist ein neues Kapitel, das einen Überblick über Alternativen für die gleichzeitige und parallele Verarbeitung in Python und ihre Grenzen gibt und zeigt, wie die Softwarearchitektur es Python ermöglicht, im Webmaßstab zu arbeiten. Ich habe das Kapitel über asynchrone Programmierung neu geschrieben, um die Kernfunktionen der Sprache hervorzuheben - z. B. await, async dev, async for und async with- und zu zeigen, wie sie mit Asyncio und anderen Frameworks genutzt werden.

Teil V, "Metaprogrammierung"

Dieser Teil von beginnt mit einem Überblick über Techniken zur Erstellung von Klassen mit dynamisch erzeugten Attributen, um halbstrukturierte Daten wie JSON-Datensätze zu verarbeiten. Als Nächstes behandeln wir den bekannten Eigenschaftsmechanismus, bevor wir uns ansehen, wie der Zugriff auf Objektattribute auf einer niedrigeren Ebene in Python mit Hilfe von Deskriptoren funktioniert. Die Beziehung zwischen Funktionen, Methoden und Deskriptoren wird erklärt. In Teil V werden durch die schrittweise Implementierung einer Feldvalidierungsbibliothek subtile Probleme aufgedeckt, die zu den fortgeschrittenen Werkzeugen des letzten Kapitels führen: Klassendekoratoren und Metaklassen.

Hands-On-Ansatz

Oft werden wir die interaktive Python-Konsole nutzen, um die Sprache und die Bibliotheken zu erkunden. Ich halte es für wichtig, die Stärke dieses Lernwerkzeugs hervorzuheben, insbesondere für diejenigen Leser, die mehr Erfahrung mit statischen, kompilierten Sprachen haben, die keine REPL-Schleife (Read-Eval-Print) bieten.

Eines der Standardpakete für Python-Tests, doctestsimuliert Konsolensitzungen und prüft, ob die Ausdrücke die angezeigten Antworten ergeben. Ich habe doctest verwendet, um den Großteil des Codes in diesem Buch zu überprüfen, einschließlich der Konsolenauflistungen. Du musst doctest weder benutzen noch kennen, um zu folgen: Das Hauptmerkmal von Doctests ist, dass sie wie Transkripte von interaktiven Python-Konsolensitzungen aussehen, sodass du die Demonstrationen leicht selbst ausprobieren kannst.

Manchmal erkläre ich, was wir erreichen wollen, indem ich einen Test vor dem Code zeige, der ihn erfolgreich macht. Wenn wir erst wissen, was zu tun ist, bevor wir darüber nachdenken, wie wir es tun, können wir uns auf die Programmierung konzentrieren. Tests zuerst zu schreiben, ist die Grundlage der testgetriebenen Entwicklung (TDD), und ich habe es auch beim Unterrichten als hilfreich empfunden. Wenn du mit doctest nicht vertraut bist, wirf einen Blick in die Dokumentationund das Beispielcode-Repository dieses Buches.

Ich habe auch Unit-Tests für einige der größeren Beispiele geschrieben, indem ich pytestverwendet habe - einModul , dasmeiner Meinung nach einfacher zu benutzen und leistungsfähiger ist als das Unittest-Modul in der Standardbibliothek. Du wirst feststellen, dass du die Korrektheit des meisten Codes in diesem Buch überprüfen kannst, indem du python3 -m doctest example_script.py oder pytest in die Befehlsshell deines Betriebssystems eingibst. Die pytest.ini-Konfiguration im Stammverzeichnis des Beispielcodes stellt sicher, dass die Doctests gesammelt und vom Befehl pytest ausgeführt werden.

Seifenkiste: Meine persönliche Sichtweise

Ich benutze, lehre und diskutiere Python seit 1998 und es macht mir Spaß, Programmiersprachen, ihr Design und die Theorie dahinter zu untersuchen und zu vergleichen. Am Ende einiger Kapitel habe ich "Soapbox"-Seitenleisten mit meinen eigenen Ansichten über Python und andere Sprachen hinzugefügt. Wenn du nicht an solchen Diskussionen interessiert bist, kannst du sie gerne überspringen. Ihr Inhalt ist völlig optional.

Companion Website: fluentpython.com

Durch die Abdeckung von neuen Funktionen wie Typ-Hinweisen, Datenklassen und Mustervergleichen ist diese zweite Ausgabe fast 30 % umfangreicher als die erste. Um das Buch handlich zu halten,habe ich einen Teil des Inhalts auf fluentpython.comverlagert. In mehreren Kapiteln findest du Links zu Artikeln, die ich dort veröffentlicht habe. Einige Beispielkapitel sind auch auf der begleitenden Website zu finden. Der vollständige Text istonline über denO'Reilly Learning Subskriptionsserviceverfügbar. Das Beispielcode-Repository befindet sich auf GitHub.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Beachte, dass bei einem Zeilenumbruch innerhalb eines constant_width Begriffs fällt, wird kein Bindestrich hinzugefügt - er könnte als Teil des Begriffs missverstanden werden.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Jedes Skript und die meisten Codeschnipsel, die im Buch vorkommen, sind im Fluent Python Code Repository auf GitHub unter https://fpy.li/code verfügbar .

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, sende bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teildes Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eineGenehmigung erforderlich.

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst in der Regel den Titel, den Autor, den Verlag und die ISBN, z. B. "Fluent Python, 2. Auflage, von Luciano Ramalho (O'Reilly). Copyright 2022 Luciano Ramalho, 978-1-492-05635-5."

Wenn du der Meinung bist, dass deine Verwendung von Codebeispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.

Wie du uns kontaktierst

Bitte wende dich mit Kommentaren und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://fpy.li/p-4 aufrufen .

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter http://oreilly.com.

Du findest uns auf Facebook: http://facebook.com/oreilly.

Folge uns auf Twitter: https://twitter.com/oreillymedia.

Sieh uns auf YouTube: http://www.youtube.com/oreillymedia.

Danksagungen

Ich hatte nicht erwartet, dass die Aktualisierung eines Python-Buches fünf Jahre später ein so großes Unterfangen sein würde, aber das war es. Marta Mello, meine geliebte Frau, war immer da, wenn ich sie brauchte. Mein lieber Freund Leonardo Rochael half mir vom ersten Schreiben bis zur abschließenden technischen Überprüfung, einschließlich der Konsolidierung und doppelten Überprüfung des Feedbacks der anderen technischen Prüfer, Leser und Redakteure. Ich weiß ehrlich gesagt nicht, ob ich es ohne eure Unterstützung geschafft hätte, Marta und Leo. Vielen Dank dafür!

Jürgen Gmach, Caleb Hattingh, Jess Males, Leonardo Rochael und Miroslav Šedivý waren das hervorragende technische Review-Team für die zweite Ausgabe. Sie überprüften das gesamte Buch. Bill Behrman, Bruce Eckel, Renato Oliveira und Rodrigo Bernardo Pimentel überprüften einzelne Kapitel. Ihre vielen Vorschläge aus unterschiedlichen Perspektiven machten das Buch noch viel besser.

Viele Leser schickten Korrekturen oder leisteten andere Beiträge während der frühen Veröffentlichungsphase, darunter: Guilherme Alves, Christiano Anderson, Konstantin Baikov, K. Alex Birch, Michael Boesl, Lucas Brunialti, Sergio Cortez, Gino Crecco, Chukwuerika Dike, Juan Esteras, Federico Fissore, Will Frey, Tim Gates, Alexander Hagerman, Chen Hanxiao, Sam Hyeong, Simon Ilincev, Parag Kalra, Tim King, David Kwast, Tina Lapine, Wanpeng Li, Guto Maia, Scott Martindale, Mark Meyer, Andy McFarland, Chad McIntire, Diego Rabatone Oliveira, Francesco Piccoli, Meredith Rawls, Michael Robinson, Federico Tula Rovaletti, Tushar Sadhwani, Arthur Constantino Scardua, Randal L. Schwartz, Avichai Sefati, Guannan Shen, William Simpson, Vivek Vashist, Jerry Zhang, Paul Zuradzi - und andere, die nicht namentlich genannt werden wollten, nach der Abgabe des Entwurfs Korrekturen schickten oder deren Namen mir fehlgeschlagen sind.

Während meiner Forschung habe ich mit Michael Albert, Pablo Aguilar, Kaleb Barrett, David Beazley, J. S. O. Bueno, Bruce Eckel, Martin Fowler, Ivan Levkivskyi, Alex Martelli, Peter Norvig, Sebastian Rittau, Guido van Rossum, Carol Willing und Jelle Zijlstra über Typisierung, Parallelität, Mustervergleich und Metaprogrammierung gesprochen.

Die O'Reilly-Redakteure Jeff Bleiel, Jill Leonard und Amelia Blevins machten Vorschläge, die den Fluss des Buches an vielen Stellen verbesserten. Jeff Bleiel und Produktionsredakteur Danny Elfanbaum unterstützten mich während dieses langen Marathons.

Die Einsichten und Vorschläge eines jeden von ihnen haben das Buch besser und genauer gemacht. Unvermeidlich wird es im Endprodukt noch Fehler geben, die ich selbst verursacht habe. Dafür entschuldige ich mich im Voraus.

Abschließend möchte ich meinen Kolleginnen und Kollegen bei Thoughtworks Brasilien - und insbesondere meinem Sponsor Alexey Bôas - herzlich danken, die dieses Projekt in vielerlei Hinsicht unterstützt haben, und zwar bis zum Schluss.

Natürlich gebührt allen, die mir geholfen haben, Python zu verstehen und die erste Ausgabe zu schreiben, jetzt ein doppelter Dank. Es gäbe keine zweite Ausgabe ohne eine erfolgreiche erste.

Danksagungen für die erste Ausgabe

Das Bauhaus-Schachspiel von Josef Hartwig ist ein Beispiel für exzellentes Design: schön, einfach und klar. Guido van Rossum, Sohn eines Architekten und Bruder eines Schriftdesigners, hat ein Meisterwerk des Sprachdesigns geschaffen. Ich liebe es, Python zu unterrichten, weil es schön, einfach und klar ist.

Alex Martelli und Anna Ravenscroft waren die ersten, die den Entwurf dieses Buches sahen und mich ermutigten, es bei O'Reilly zur Veröffentlichung einzureichen. In ihren Büchern lernte ich idiomatisches Python und sie sind Vorbilder für Klarheit, Genauigkeit und Tiefe im technischen Schreiben.Alex' mehr als 6.200 Stack Overflow-Beiträgesind eine Fundgrube für Erkenntnisse über die Sprache und ihre richtige Verwendung.

Martelli und Ravenscroft waren zusammen mit Lennart Regebro und Leonardo Rochael auch die technischen Gutachter dieses Buches. Jeder in diesem hervorragenden technischen Review-Team hat mindestens 15 Jahre Python-Erfahrung, viele Beiträge zu wichtigen Python-Projekten und engen Kontakt zu anderen Entwicklern in der Community. Gemeinsam schickten sie mir Hunderte von Korrekturen, Vorschlägen, Fragen und Meinungen, die einen enormen Mehrwert für das Buch darstellen. Victor Stinner war so freundlich, Kapitel 21 zu überprüfen und brachte sein Fachwissen als asyncio Maintainer in das technische Überprüfungsteam ein. Es war ein großes Privileg und eine Freude, mit ihnen in den letzten Monaten zusammenzuarbeiten.

Die Lektorin Meghan Blanchette war eine hervorragende Mentorin, die mir geholfen hat, die Organisation und den Fluss des Buches zu verbessern, mich darauf aufmerksam zu machen, wenn es langweilig war, und mich davon abzuhalten, es noch mehr zu verzögern. Brian MacDonald bearbeitete die Kapitel in Teil II, während Meghan weg war. Ich habe gerne mit ihnen und mit allen, die ich bei O'Reilly kontaktiert habe, zusammengearbeitet, einschließlich des Atlas-Entwicklungs- und Support-Teams (Atlas ist die Buchveröffentlichungsplattform von O'Reilly, die ich zum Schreiben dieses Buches nutzen durfte).

Mario Domenech Goulart lieferte zahlreiche, detaillierte Vorschläge, angefangen bei der ersten frühen Version. Wertvolles Feedback erhielt ich auch von Dave Pawson, Elias Dorneles, Leonardo Alexandre Ferreira Leite, Bruce Eckel, J. S. Bueno, Rafael Gonçalves, Alex Chiaranda, Guto Maia, Lucas Vido und Lucas Brunialti.

Im Laufe der Jahre drängten mich eine Reihe von Menschen, Autor zu werden, aber die überzeugendsten waren Rubens Prates, Aurelio Jargas, Rudá Moura und Rubens Altimari. Mauricio Bussab öffnete mir viele Türen, darunter auch meine erste richtige Chance, ein Buch zu schreiben. Renzo Nuccitelli unterstützte dieses Schreibprojekt von Anfang an, auch wenn das einen langsamen Start für unsere Partnerschaft bei python.pro.br bedeutete.

Die wunderbare brasilianische Python-Community ist kenntnisreich, großzügig und macht Spaß. Die Python Brasil Gruppe hat Tausende von Leuten und unsere nationalen Konferenzen bringen Hunderte zusammen, aber die einflussreichsten auf meiner Reise als Pythonista waren Leonardo Rochael, Adriano Petrich, Daniel Vainsencher, Rodrigo RBP Pimentel, Bruno Gola, Leonardo Santagada, Jean Ferri, Rodrigo Senra, J. S. Bueno, David Kwast, Luiz Irber, Osvaldo Santana, Fernando Masanori, Henrique Bastos, Gustavo Niemayer, Pedro Werneck, Gustavo Barbieri, Lalo Martins, Danilo Bellini und Pedro Kroger.

Dorneles Tremea war ein großartiger Freund (unglaublich großzügig mit seiner Zeit und seinem Wissen), ein erstaunlicher Hacker und der inspirierendste Leiter der brasilianischen Python Association. Er hat uns viel zu früh verlassen.

Meine Schülerinnen und Schüler haben mir im Laufe der Jahre durch ihre Fragen, Einsichten, ihr Feedback und ihre kreativen Problemlösungen viel beigebracht. Érico Andrei und Simples Consultoria haben es mir ermöglicht, mich zum ersten Mal auf meine Arbeit als Python-Lehrer zu konzentrieren.

Martijn Faassen war mein Grok-Mentor und teilte mit mir unschätzbare Erkenntnisse über Python und Neandertaler. Seine Arbeit und die von Paul Everitt, Chris McDonough, Tres Seaver, Jim Fulton, Shane Hathaway, Lennart Regebro, Alan Runyan, Alexander Limi, Martijn Pieters, Godefroid Chapelle und anderen von den Planeten Zope, Plone und Pyramid waren entscheidend für meine Karriere. Dank Zope und dem Surfen auf der ersten Webwelle konnte ich 1998 anfangen, meinen Lebensunterhalt mit Python zu verdienen. José Octavio Castro Neves war mein Partner im ersten Python-zentrierten Softwarehaus in Brasilien.

Ich habe zu viele Gurus in der Python-Gemeinschaft, um sie alle aufzulisten, aber abgesehen von den bereits erwähnten, stehe ich in der Schuld von Steve Holden, Raymond Hettinger, A.M. Kuchling, David Beazley, Fredrik Lundh, Doug Hellmann, Nick Coghlan, Mark Pilgrim, Martijn Pieters, Bruce Eckel, Michele Simionato, Wesley Chun, Brandon Craig Rhodes, Philip Guo, Daniel Greenfeld, Audrey Roy und Brett Slatkin dafür, dass sie mir neue und bessere Wege gezeigt haben, Python zu lehren.

Die meisten dieser Seiten wurden in meinem Büro zu Hause und in zwei Laboren geschrieben: CoffeeLab und Garoa Hacker Clube. Das CoffeeLab ist das Hauptquartier der Koffein-Freaks in Vila Madalena, São Paulo, Brasilien. Der Garoa Hacker Clube ist ein Hackerspace, der allen offensteht: ein Gemeinschaftslabor, in dem jeder frei neue Ideen ausprobieren kann.

Die Garoa-Gemeinschaft lieferte Inspiration, Infrastruktur und Slack. Ich glaube, Aleph würde dieses Buch gefallen.

Meine Mutter, Maria Lucia, und mein Vater, Jairo, haben mich immer in jeder Hinsicht unterstützt. Ich wünschte, er wäre hier, um das Buch zu sehen; ich bin froh, dass ich es mit ihr teilen kann.

Meine Frau, Marta Mello, ertrug 15 Monate lang einen ständig arbeitenden Ehemann, unterstützte mich aber und coachte mich in einigen kritischen Momenten des Projekts, als ich befürchtete, dass ich aus dem Marathon aussteigen würde.

Ich danke euch allen für alles.

1 Nachricht an die Usenet-Gruppe comp.lang.python, 23. Dezember 2002: "Acrimony in c.l.p".

Get Fließendes Python, 2. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.