E-Book, Deutsch, 336 Seiten
Reihe: Animals
Best Practices für Programmierer
E-Book, Deutsch, 336 Seiten
Reihe: Animals
ISBN: 978-3-96010-328-8
Verlag: O'Reilly
Format: EPUB
Kopierschutz: 6 - ePub Watermark
Dieses Buch wurde im Rahmen eines Gemeinschaftsprojekts von über einhundert Mitgliedern der Python-Community geschrieben. In Teil 1 geht es um das Einrichten der Python-Umgebung (Interpreter, Python-Installation, Texteditor, IDE). Dann tauchen Sie in Beispiel-Code ein, der den Python-Stil mustergültig umsetzt. Teil 3 macht Sie mit Bibliotheken vertraut, die von der Python-Community bevorzugt genutzt werden.
- Entwickeln Sie besseren Python-Code, indem Sie Stil, Konventionen, Idiome und Fallstricke kennenlernen.
- Sehen Sie sich exzellente Open-Source-Codebeispiele ausgewählter Python-Bibliotheken an.
- Studieren Sie Best Practices für die Paketierung und Distribution von Python-Code.
- Erkunden Sie Pythons Bibliotheken für die Benutzer-Interaktion – von Konsolenanwendungen über GUIs bis hin zu Webapplikationen.
- Lernen Sie Tools für die Systemadministration sowie das Interfacing mit C- und C++-Bibliotheken kennen und verbessern Sie die Geschwindigkeit von Python.
- Arbeiten Sie mit Netzwerk-Bibliotheken für asynchrone Aktionen, Serialisierung und Kryptografie.
- Lernen Sie Bibliotheken zur Datenpersistenz und -manipulation kennen, darunter auch Werkzeuge zur Bild- und Audioverarbeitung.
Prägnant und meinungsstark nimmt Sie der Hitchhiker's Guide mit auf
eine Pro-Tour durch das Python-Universum.
Raymond Hettinger, Python Core Developer
Weitere Infos & Material
KAPITEL 1
Einen Interpreter wählen
Stand der Dinge: Python 2 versus Python 3
Bei der Wahl eines Python-Interpreters geistert immer die eine Frage durch den Raum: »Soll ich Python 2 oder Python 3 nehmen«? Die Antwort liegt nicht so auf der Hand, wie man glauben mag (auch wenn Python 3 jeden Tag verlockender wird). Hier der Stand der Dinge: Python 2.7 war lange Zeit der Standard. Bei Python 3 wurden größere Änderungen an der Sprache vorgenommen, über die einige Entwickler sehr unglücklich sind.1 Python 2.7 erhält notwendige Sicherheits-Updates bis 2020 (https://www.python.org/dev/peps/pep-0373/). Python 3 entwickelt sich kontinuierlich weiter, genau wie in der Vergangenheit Python 2. Wie Sie sehen, ist die Entscheidung nicht ganz so einfach. Empfehlungen
So wie wir es sehen, würde ein wirklich abgefahrener Typ2 Python 3 nutzen. Doch auch wenn Sie lediglich Python 2 einsetzen können, nutzen Sie immerhin noch Python. Hier unsere Empfehlungen: Verwenden Sie Python 3, wenn … Sie Python 3 lieben. Sie nicht wissen, welche Version Sie nutzen sollen. Sie den Wandel lieben. Verwenden Sie Python 2, wenn … Sie Python 2 lieben und traurig sind, weil Python 3 die Zukunft ist. die Stabilitätsanforderungen Ihrer Software betroffen wären.3 die von Ihnen genutzte Software es verlangt. Also … Python 3?
Sind Sie bei der Wahl des Python-Interpreters offen, sollten Sie die neueste Python 3.x-Version einsetzen – jede neue Version bringt neue und verbesserte Module der Standardbibliothek, eine verbesserte Sicherheit und Fehlerkorrekturen. Fortschritt ist Fortschritt. Nutzen Sie Python 2 also nur aus guten Gründen, z.B. wenn Sie eine Python 2-Bibliothek benötigen, für die es bei Python 3 keine Alternative gibt, oder wenn Sie eine bestimmte Implementierung verwenden müssen (siehe »Implementierungen« auf Seite 5) oder wenn Sie (wie einige von uns) von Python 2 begeistert sind. Schauen Sie sich Can I Use Python 3? (https://caniusepython3.com/) an, wenn Sie wissen wollen, ob die Python-Projekte, von denen Sie abhängig sind, die Nutzung von Python 3 verhindern. Als weiterführende Lektüre sei Python2orPython3 (http://bit.ly/python2-or-python3) empfohlen. Es erklärt die Gründe für die Rückwärts-Inkompatibilität der Sprachspezifikation und verweist auf detaillierte Spezifikationen der Unterschiede. Als Einsteiger haben Sie weit wichtigere Dinge zu tun, als sich um die Kompatibilität zwischen all den Python-Versionen Gedanken zu machen. Bringen Sie Ihr vorhandenes System erst mal ans Laufen und kümmern Sie sich später um diese Baustelle. Implementierungen
Wenn die Leute von Python sprechen, ist häufig nicht nur die Sprache, sondern auch die CPython-Implementierung gemeint. Tatsächlich ist Python eine Sprachspezifikation, die auf unterschiedliche Weise implementiert werden kann. Die verschiedenen Implementierungen können der Kompatibilität mit anderen Bibliotheken dienen oder vielleicht einer höheren Geschwindigkeit. Reine Python-Bibliotheken sollten unabhängig von der Python-Implementierung laufen, die auf C basierenden (wie NumPy) allerdings nicht. Dieser Abschnitt bietet einen kurzen Überblick über beliebte Implementierungen. Dieses Handbuch geht davon aus, dass Sie die Standard-CPython-Implementierung von Python 3 nutzen, auch wenn wir häufig für Python 2 relevante Hinweise einstreuen. CPython CPython (http://www.python.org/) ist die in C geschriebene Referenzimplementierung4 von Python. Sie kompiliert Python-Code in Bytecode, der dann von einer virtuellen Maschine interpretiert wird. CPython bietet den höchsten Grad an Kompatibilität für Python-Pakete und in C geschriebene Erweiterungsmodule.5 Wenn Sie Open-Source-Code in Python entwickeln und das größtmögliche Publikum erreichen wollen, sollten Sie CPython nutzen. Möchten Sie Pakete nutzen, die von C-Erweiterungen abhängig sind, ist CPython Ihre einzige Option. Alle Versionen der Sprache Python sind in C implementiert, da CPython die Referenzimplementierung ist. Stackless Stackless Python (https://bitbucket.org/stackless-dev/stackless/wiki/Home) ist ein »normales« CPython (d.h., es sollte mit allen Bibliotheken funktionieren, die CPython nutzen kann), entkoppelt aber über einen Patch den Python-Interpreter vom Aufrufstack. Dadurch wird es möglich, die Ausführungsreihenfolge des Codes zu ändern. Stackless führt das Konzept sogenannter Tasklets ein, die Funktionen in »Micro-Threads« umwandeln. Diese können dann serialisiert auf die Festplatte gespeichert und später über einen Scheduler (standardmäßig ein Round-Robin-Scheduler) ausgeführt werden. Die greenlet-Bibliothek (http://greenlet.readthedocs.org) implementiert den gleichen Stack-Switching-Mechanismus für CPython-Nutzer. Ein Großteil dieser Funktionalität wurde auch in PyPy implementiert. PyPy PyPy (http://pypy.org/) ist ein Python-Interpreter, der eine statisch typisierte Teilmenge von Python namens RPython implementiert, was bestimmte Arten der Optimierung ermöglicht. Der Interpreter bietet einen Just-in-Time-Compiler und unterstützt mehrere Backends wie C, Common Intermediate Language (CIL) (http://bit.ly/standard-ecma-335) und die Java Virtual Machine (JVM). PyPy strebt die größtmögliche Kompatibilität mit der Referenzimplementierung an, während es gleichzeitig die Performance erhöht. Wenn Sie die Performance Ihres Python-Codes verbessern wollen, sollten Sie PyPy eine Chance geben. Bei einer Benchmark-Suite läuft es momentan etwa fünfmal schneller als CPython (http://speed.pypy.org/). Es unterstützt Python 2.7. Für Python 3 steht PyPy3 (http://pypy.org/compat.html) bereit. Beide Versionen sind über die PyPy-Download-Seite (http://pypy.org/download.html) verfügbar. Jython Jython (http://www.jython.org/) ist eine Implementierung des Python-Interpreters, die den Python-Code in Java-Bytecode kompiliert, der dann durch die JVM ausgeführt werden kann. Darüber hinaus kann Jython jede Java-Klasse wie ein Python-Modul importieren und nutzen. Wenn Sie eine Schnittstelle zur existierenden Java-Codebasis brauchen oder aus anderen Gründen Python-Code für die JVM schreiben müssen, ist Jython die beste Wahl. Jython unterstützt momentan Python 2.7 (http://bit.ly/jython-supports-27). IronPython IronPython (http://ironpython.net/) ist eine Python-Implementierung für das .NET Framework. Es kann Bibliotheken sowohl von Python als auch von .NET Framework nutzen und gleichzeitig Python-Code für andere Sprachen des .NET Framework bereitstellen. Python Tools for Visual Studio (http://ironpython.net/tools/) integriert IronPython direkt in die Entwicklungsumgebung und macht es so zur idealen Wahl für Windows-Entwickler. IronPython unterstützt Python 2.7 (http://ironpython.codeplex.com/releases/view/81726). PythonNet Python for .NET (http://pythonnet.github.io/) ist ein Paket, das eine nahezu nahtlose Integration eines nativ installierten Python-Systems mit der .NET Common Language Runtime (CLR) erlaubt. Das ist das genaue Gegenteil des von IronPython verfolgten Ansatzes, das heißt, PythonNet und IronPython ergänzen sich eher, als dass sie miteinander konkurrieren. Im Zusammenspiel mit Mono (http://www.mono-project.com/) ermöglicht Python-Net auf Nicht-Windows-Systemen wie OS X und Linux die Arbeit innerhalb des .NET Framework. Es kann ohne Probleme zusammen mit IronPython betrieben werden. PythonNet unterstützt Python 2.3 bis Python 2.7. Die Installationsanweisungen finden Sie auf der PythonNet-Readme-Seite (http://pythonnet.github.io/readme.html). Skulpt Skulpt (http://www.skulpt.org/) ist eine JavaScript-Implementierung von Python. Sie portiert nicht die gesamte Standardbibliothek von CPython. Die Bibliothek umfasst die Module math, random, turtle, image und unittest sowie Teile von time, urllib, DOM und re. Es ist für Lehrzwecke gedacht und bietet auch die Möglichkeit, eigene Module einzubinden (http://bit.ly/skulpt-adding-module). Beachtenswerte Beispiele für seine Nutzung sind Interactive Python (http://interactivepython.org/) und...