Kapitel 1. Auswahl eines Dolmetschers

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

Der Stand von Python 2 im Vergleich zu Python 3

Wenn sich für einen Python-Interpreter entscheidet, taucht immer eine Frage auf: "Soll ich Python 2 oder Python 3 wählen?" Die Antwort ist nicht so eindeutig, wie man meinen könnte (obwohl Python 3 jeden Tag überzeugender wird).

Hier ist der Stand der Dinge:

  • Python 2.7 ist seit langem der Standard.

  • Mit Python 3 wurden große Änderungen an der Sprache vorgenommen, mit denen einige Entwickler/innen unzufrieden sind.1

  • Python 2.7 wirdbis 2020 notwendige Sicherheitsupdates erhalten.

  • Python 3 wird ständig weiterentwickelt, so wie es Python 2 in den vergangenen Jahren getan hat.

Jetzt kannst du sehen, warum diese Entscheidung nicht so einfach ist.

Empfehlungen

So wie wir es sehen, würde ein wahrer Hoopy Frood2 würde Python 3 verwenden. Aber wenn du nur Python 2 benutzen kannst, benutzt du wenigstens noch Python. Das sind unsere Empfehlungen:

Verwende Python 3, wenn...
  • Du liebst Python 3.

  • Du weißt nicht, welche du benutzen sollst.

  • Du nimmst Veränderungen an.

Verwende Python 2, wenn...
  • Du liebst Python 2 und bist traurig, dass die Zukunft Python 3 sein wird.

  • Die Stabilitätsanforderungen deiner Software würden beeinträchtigt werden.3

  • Software, auf die du angewiesen bist, braucht sie.

Also...3?

Wenn du dich für einen Python-Interpreter entscheidest und nicht rechthaberisch bist, dann nimm die neueste Python-Version 3.x - jede Version bringt neue und verbesserte Standardbibliotheksmodule, Sicherheit und Fehlerbehebungen. Fortschritt ist Fortschritt. Verwende Python 2 also nur, wenn du einen triftigen Grund dafür hast, z. B. eine Python-2-exklusive Bibliothek, für die es keine adäquate Python-3-Alternative gibt, eine bestimmte Implementierung (siehe "Implementierungen") oder wenn du (wie einige von uns) Python 2 liebst und von ihm begeistert bist.

Unter Kann ich Python 3 verwenden?erfährst du, ob die Python-Projekte, auf die du angewiesen bist, die Einführung von Python 3 blockieren.

Weitere Informationen findest du in Python2oderPython3, wo du die Gründe für den rückwärtskompatiblen Bruch in der Sprachspezifikation nachlesen kannst und Links zu detaillierten Beschreibungen der Unterschiede findest.

Wenn du ein Anfänger bist, gibt es viel wichtigere Dinge, über die du dir Sorgen machen musst, als die Kompatibilität zwischen den verschiedenen Python-Versionen. Sorge einfach dafür, dass dein System funktioniert, und kümmere dich später um dieses Problem.

Durchführungen

Wenn Menschen von Python sprechen, meinen sie oft nicht nur die Sprache, sondern auch die CPython-Implementierung.Python ist eigentlich eine Spezifikation für eine Sprache, die auf viele verschiedene Arten implementiert werden kann.

Die verschiedenen Implementierungen dienen entweder der Kompatibilität mit anderen Bibliotheken oder der Geschwindigkeit. Reine Python-Bibliotheken sollten unabhängig von deiner Python-Implementierung funktionieren, auf C basierende Bibliotheken (wie NumPy) hingegen nicht. In diesem Abschnitt findest du eine kurze Übersicht über die beliebtesten Implementierungen.

Hinweis

In diesem Leitfaden wird davon ausgegangen, dass du mit der Standard-CPython-Implementierung von Python 3 arbeitest, obwohl wir häufig Hinweise hinzufügen werden, wenn sie für Python 2 relevant sind.

CPython

CPython ist die Referenzimplementierung von Python.4 von Python, die in C geschrieben ist. Sie kompiliert Python-Code in Zwischen-Bytecode, der dann von einer virtuellen Maschine interpretiert wird. CPython bietet ein Höchstmaß an Kompatibilität mit Python-Paketen und C-Erweiterungsmodulen.5

Wenn du Open-Source-Python-Code schreibst und ein möglichst breites Publikum erreichen willst, solltest du CPython verwenden. Um Pakete zu verwenden, die auf C-Erweiterungen angewiesen sind, um zu funktionieren, ist CPython deine einzige Implementierungsmöglichkeit.

Alle Versionen der Sprache Python sind in C implementiert, weil CPython die Referenzimplementierung ist.

Stackless

Stackless Python ist reguläres CPython (d.h. es sollte mit allen Bibliotheken funktionieren, die CPython verwenden kann), aber mit einem Patch, der den Python-Interpreter vom Aufrufstapel entkoppelt, so dass es möglich ist, die Reihenfolge der Codeausführung zu ändern. Stackless führt das Konzept der Tasklets ein, die Funktionen einpacken und in "Mikro-Threads" verwandeln können, die für die spätere Ausführung auf der Festplatte serialisiert und geplant werden können, standardmäßig in Round-Robin-Ausführung.

Die greenlet-Bibliothek implementiert die gleiche Stack-Switching-Funktionalität für CPython-Nutzer. Ein Großteil der Funktionalität wurde auch in PyPy implementiert.

PyPy

PyPy ist ein Python-Interpreter, der in einer eingeschränkten, statisch typisierten Untermenge der Sprache Python namens RPython implementiert ist, was bestimmte Optimierungen ermöglicht. Der Interpreter verfügt über einen Just-in-Time-Compiler und unterstützt mehrere Backends, z. B. C, Common Intermediate Language (CIL) und Java Virtual Machine (JVM) Bytecode.

PyPy zielt auf maximale Kompatibilität mit der Referenzimplementierung von CPython ab und verbessert gleichzeitig die Leistung. Wenn du die Leistung deines Python-Codes steigern willst, lohnt es sich, PyPy auszuprobieren. In einer Reihe von Benchmarks ist es derzeit über fünfmal schneller als CPython.

Es unterstützt Python 2.7, und PyPy3zielt auf Python 3 ab. Beide Versionen sind auf der PyPy-Downloadseite erhältlich.

Jython

Jython ist eine Python-Interpreter-Implementierung, die Python-Code in Java-Bytecode kompiliert, der dann von der JVM ausgeführt wird. Außerdem kann sie jede Java-Klasse wie ein Python-Modul importieren und verwenden.

Wenn du eine Schnittstelle zu einer bestehenden Java-Codebasis brauchst oder aus anderen Gründen Python-Code für die JVM schreiben musst, ist Jython die beste Wahl.

Jython unterstützt derzeit bis zuPython 2.7.

IronPython

IronPython ist eine Implementierung von Python für das .NET Framework. Sie kann sowohl Python- als auch .NET-Framework-Bibliotheken verwenden und kann Python-Code auch für andere Sprachen im .NET-Framework freigeben.

Python Tools for Visual Studiointegriert IronPython direkt in die Visual Studio Entwicklungsumgebung und ist damit die ideale Wahl für Windows-Entwickler.

IronPython unterstütztPython 2.7.

PythonNet

Python für .NET ist ein Paket, das eine nahezu nahtlose Integration einer nativ installierten Python-Installation mit der .NET Common Language Runtime (CLR) ermöglicht. Dies ist der umgekehrte Ansatz wie bei IronPython, d.h. PythonNet und IronPython ergänzen sich, anstatt miteinander zu konkurrieren.

In Verbindung mit Mono ermöglicht PythonNet den Betrieb nativer Python-Installationen auf Nicht-Windows-Betriebssystemen wie OS X und Linux innerhalb des .NET-Frameworks. Es kann konfliktfrei zusätzlich zu IronPython ausgeführt werden.

PythonNet unterstützt Python 2.3 bis zu Python 2.7; die Installationsanweisungen findest du auf der PythonNet-Readme-Seite.

Skulpt

Skulpt ist eine JavaScript-Implementierung von Python. Es hat nicht die gesamte CPython-Standardbibliothek portiert; die Bibliothek enthält die Module math, random, turtle, image, unittest und Teile von time, urllib, DOM und re. Sie ist für den Einsatz im Unterricht gedacht. Es gibt auch eine Möglichkeit,eigene Module hinzuzufügen.

Bemerkenswerte Beispiele für seine Verwendung sindInteractive Python undCodeSkulptor.

Skulpt unterstützt den Großteil von Python 2.7 und Python 3.3. Weitere Informationen findest du auf der Skulpt GitHub-Seite.

MicroPython

MicroPython ist eine Implementierung von Python 3, die für die Ausführung auf einem Mikrocontroller optimiert ist; sie unterstützt 32-Bit-ARM-Prozessoren mit dem Thumb v2-Befehlssatz, wie z. B. die Cortex-M-Reihe, die in kostengünstigen Mikrocontrollern verwendet wird. Sie enthältdiese Moduleaus der Python-Standardbibliothek sowie einige MicroPython-spezifische Bibliotheken für Board-Details, Speicherinformationen, Netzwerkzugriff und eine modifizierte Version von ctypes, die für eine geringere Größe optimiert ist. Sie ist nicht dasselbe wie der Raspberry Pi, der ein Debian- oder ein anderes C-basiertes Betriebssystem mit installiertem Python hat. Das pyboard verwendet MicroPython als Betriebssystem.

Hinweis

Von nun an verwenden wir CPython auf einem Unix-ähnlichen System, auf OS X oder auf einem Windows-System.

Jetzt geht es an den Einbau - schnapp dir dein Handtuch!

1 Wenn du nicht viel mit Low-Level-Netzwerkprogrammierung zu tun hast, war die Änderung kaum zu bemerken, abgesehen davon, dass aus der print -Anweisung eine Funktion wurde. Ansonsten ist "unglücklich mit" eine höfliche Untertreibung - Entwickler, die für große, beliebte Web-, Socket- oder Netzwerkbibliotheken verantwortlich sind, die mit Unicode und Byte-Strings arbeiten, mussten (oder müssen noch) umfangreiche Änderungen vornehmen. Die Details zu den Änderungen, die direkt aus der ersten Vorstellung von Python 3 stammen, beginnen mit: "Alles, was du über Binärdaten und Unicode zu wissen glaubtest, hat sich geändert."

2 Jemand, der wirklich erstaunlich zusammen ist. Wir meinen, der wirklich weiß, wo sein Handtuch ist.

3 Hier ist ein Link zu einer übersichtlichen Liste der Änderungen an der Standardbibliothek von Python.

4 Die Referenzimplementierung gibt die Definition der Sprache genau wieder. Ihr Verhalten entspricht dem, wie sich alle anderen Implementierungen verhalten sollten.

5 C-Erweiterungsmodule werden in C für die Verwendung in Python geschrieben.

Get Der Per Anhalter durch die Python 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.