PEP 404 – Python 2.8 Un-release Schedule
- Autor:
- Barry Warsaw <barry at python.org>
- Status:
- Final
- Typ:
- Informational
- Thema:
- Release
- Erstellt:
- 09-Nov-2011
- Python-Version:
- 2.8
Zusammenfassung
Dieses Dokument beschreibt den Un-Entwicklungs- und Un-Release-Zeitplan für Python 2.8.
Un-release Manager und Crew
| Position | Name |
|---|---|
| 2.8 Un-release Manager | Cardinal Biggles |
Un-release Schedule
Der aktuelle Un-Zeitplan ist
- 2.8 final Niemals
Offizielle Verkündung
Regel Nummer sechs: Es gibt keinen offiziellen Python 2.8 Release. Es wird niemals einen offiziellen Python 2.8 Release geben. Es ist ein Ex-Release. Python 2.7 ist das Ende der Python 2-Entwicklungslinie.
Upgrade-Pfad
Der offizielle Upgrade-Pfad von Python 2.7 ist zu Python 3.
Und nun etwas völlig anderes
Im Ernst, es gibt wichtige Gründe, warum es keinen offiziellen Python 2.8 Release geben wird und warum Sie stattdessen planen sollten, auf Python 3 zu migrieren.
Python ist (zum Zeitpunkt des Schreibens) über 20 Jahre alt, und Guido und die Community haben in diesen Jahren viel gelernt. Guidos ursprüngliche Idee für Python 3 war es, Änderungen an der Sprache vorzunehmen, hauptsächlich um die Warzen zu entfernen, die sich in den vorherigen Versionen angesammelt hatten. Python 3 sollte keine vollständige Neugestaltung sein, sondern vielmehr eine Weiterentwicklung der Sprache. Obwohl die volle Abwärtskompatibilität mit Python 2 ausdrücklich vom Tisch war, waren auch keine unnötigen Änderungen in Syntax oder Semantik akzeptabel. In den meisten Fällen kann Python 2-Code relativ einfach in Python 3 übersetzt werden, manchmal sogar rein mechanisch durch Tools wie 2to3 (es gibt auch eine nicht-triviale Teilmenge der Sprache, die ohne Änderungen sowohl unter 2.7 als auch unter 3.x läuft).
Da die Wartung mehrerer Python-Versionen eine erhebliche Belastung für die Ressourcen der Python-Entwickler darstellt und da die Verbesserungen an der Sprache und den Bibliotheken, die in Python 3 verkörpert sind, so wichtig sind, wurde beschlossen, die Python 2-Linie mit Python 2.7 zu beenden. Daher findet die gesamte Neuentwicklung in der Python 3-Entwicklungslinie statt, und es wird niemals einen offiziellen Python 2.8 Release geben. Python 2.7 wird jedoch länger als üblich gewartet.
Hier sind einige Highlights der signifikanten Verbesserungen in Python 3. Sie können detailliertere Informationen über die Unterschiede zwischen Python 2 und Python 3 lesen. Es gibt auch viele gute Anleitungen zum Portieren von Python 2 auf Python 3.
Strings und Bytes
Die grundlegenden ursprünglichen Strings von Python 2 werden als 8-Bit-Strings bezeichnet und spielen in Python 2 eine Doppelrolle als ASCII-Text und als Byte-Sequenzen. Obwohl Python 2 auch einen Unicode-String-Typ hat, führt die grundlegende Mehrdeutigkeit des Kern-String-Typs, gepaart mit dem Standardverhalten von Python 2, das die automatische Konvertierung von 8-Bit-Strings in Unicode-Objekte unterstützt, wenn die beiden kombiniert werden, oft zu UnicodeErrors. Der Standard-String-Typ von Python 3 basiert auf Unicode, und Python 3 fügt einen dedizierten Bytes-Typ hinzu, aber entscheidend ist, dass keine automatische Konvertierung zwischen Bytes und Unicode-Strings bereitgestellt wird. Das, was der Sprache am nächsten kommt, sind einige textbasierte APIs, die eine Standardkodierung (normalerweise UTF-8) annehmen, wenn keine Kodierung explizit angegeben wird. Somit sind der Kern-Interpreter, seine I/O-Bibliotheken, Modulnamen usw. in ihrer Unterscheidung zwischen Unicode-Strings und Bytes klar. Die Unicode-Unterstützung von Python 3 erstreckt sich sogar auf das Dateisystem, sodass Nicht-ASCII-Dateinamen nativ unterstützt werden.
Diese Klarheit bei Strings/Bytes ist oft eine Quelle für Schwierigkeiten bei der Umstellung bestehender Codebasis auf Python 3, da viele Drittanbieter-Bibliotheken und -Anwendungen selbst mehrdeutig in dieser Unterscheidung sind. Nach der Migration können jedoch die meisten UnicodeErrors beseitigt werden.
Zahlen
Python 2 hat zwei grundlegende Integer-Typen: einen nativen maschinenabhängigen int-Typ und einen long-Typ mit beliebiger Länge. Diese wurden in Python 3 zu einem einzigen int-Typ zusammengeführt, der dem long-Typ von Python 2 analog ist.
Zusätzlich erzeugt die Ganzzahldivision nun Fließkommazahlen für nicht-ganzzahlige Ergebnisse.
Klassen
Python 2 hat zwei Kern-Klassenhierarchien, oft als Classic Classes und New-Style Classes bezeichnet. Letztere ermöglichen Dinge wie das Erben von eingebauten Basistypen, unterstützen deskriptorbasierte Tools wie die eingebaute Funktion property und bieten ein generell sinnvolleres und kohärenteres System für den Umgang mit Mehrfachvererbung. Python 3 bot die Möglichkeit, die Unterstützung für Classic Classes vollständig einzustellen, sodass alle Klassen in Python 3 automatisch die Semantik von New-Style Classes verwenden (obwohl das jetzt ein Missgriff ist). Es ist nicht erforderlich, explizit von object zu erben oder den Standard-Metatyp festzulegen, um sie zu aktivieren (tatsächlich wird die Festlegung eines Standard-Metatyps auf Modul-Ebene nicht mehr unterstützt – der Standard-Metatyp ist immer object).
Der Mechanismus zur expliziten Angabe einer Metaklasse hat sich ebenfalls geändert und verwendet nun ein Schlüsselwortargument metaclass in der Klassenkopfzeile anstelle eines magischen Attributs __metaclass__ im Klassenkörper.
Mehrere Schreibweisen
Es gibt in Python 2 viele Fälle, in denen für einige Konstrukte mehrere Schreibweisen existieren, wie z. B. repr() und Backticks, oder die beiden Ungleichheitsoperatoren != und <>. In allen Fällen hat Python 3 genau eine Schreibweise gewählt und die andere entfernt (z. B. wurden repr() und != beibehalten).
Imports
In Python 3 sind implizite relative Imports innerhalb von Paketen nicht mehr verfügbar – nur absolute Imports und explizite relative Imports werden unterstützt. Darüber hinaus sind Sternchen-Imports (z. B. from x import *) nur auf Modul-Ebene zulässig.
Außerdem wurden einige Bereiche der Standardbibliothek neu organisiert, um die Namensgebung intuitiver zu gestalten. Einige selten verwendete Built-ins wurden in Module der Standardbibliothek verschoben.
Iteratoren und Views
Viele APIs, die in Python 2 konkrete Listen zurückgaben, geben in Python 3 nun Iteratoren oder leichte Views zurück.
Urheberrecht
Dieses Dokument wurde gemeinfrei erklärt.
Quelle: https://github.com/python/peps/blob/main/peps/pep-0404.rst
Zuletzt geändert: 2025-02-01 08:55:40 GMT