2010-04-02 1 views
26

Ich habe die Geschichte von Python 3.x verfolgt und habe beobachtet, wie die 3.x-Funktionen nach und nach auf die 2.x-Linie portiert wurden.Python - was ist NICHT in 2.7, das in 3.1 ist? So viele Dinge wurden zurück portiert, was ist NICHT?

Die meisten der Bibliotheken, die ich verwende, wurden nicht portiert, und einige (z. B. Twisted) scheinen in unterschiedlichem Maße verdeckt oder offen feindlich gegenüber 3.x zu sein. Auf jeden Fall gab es sehr wenig Bewegung in Richtung kompatibler Versionen von vielen von ihnen. Besonders die größeren.

Also, meine Frage ist, mit all den Funktionen, die zurückportiert wurden, was ist noch in 3.x, das nicht zurück portiert wurde? Es ist ziemlich einfach zu finden, was zurückportiert wurde, aber nicht was ist übrig.

Gerade jetzt scheint die Portierung auf 3.x wie alle Schmerzen, und ich kann den Gewinn nicht sehen; vielleicht ein "Nur in 3.x" -Liste würde lassen Sie mich das Licht sehen ...

Danke,

Stu

+5

Zählen Sie die von 'from __future__ import ???' importierten Funktionen? – kennytm

+0

Klingt, als ob du wirklich wissen willst, warum du nach Python3 portieren solltest. Das wurde schon oft beantwortet. –

+1

Nein, ich versuche tatsächlich herauszufinden, was in Python 3 ist, das nicht zurück portiert wurde. – StuFuller

Antwort

6

Das Wichtigste ist wahrscheinlich Unicode überall. Es besteht also keine Notwendigkeit mehr, mit str/unicode herumzuspielen. Das klingt klein, hat aber große (positive) Implikationen, wenn Sie an die Interaktion mit dem Betriebssystem denken - zum Beispiel muss jeder versuchen, Ihnen "brauchbare" Zeichenfolgen zu geben, anstatt "eine binäre Sache, die eine Fehlermeldung sein könnte".

Es gibt auch eine Menge Dinge im Interpreter selbst, die verbessert wurden. Ein Beispiel ist die globale Interpretersperre (GIL), die nicht verschwunden ist, aber in py3k viel besser ist: presentation+slides

+0

3.3 hat eine verbesserte Unicode-Implementierung. Es gibt andere Unicode-Verbesserungen und Bugfixes nur in aktuellen 3.x. –

3

Die Geschwindigkeit könnte ein erwähnenswertes Feature sein.

Die Geschwindigkeitssteigerungen des Projekts "Unladen Schwalbe" wurden genehmigt, um in Python zusammengeführt zu werden. Aber soweit ich weiß nur zu Python 3. Siehe PEP 3146 für Details.

+0

AFAIK, US ist zu diesem Zeitpunkt aufgrund der hohen Speicheranforderungen und der langen Startzeiten kein Problem, aber ich bin mir sicher, dass es sich herausstellen wird (vielleicht mit Pre-Profiling, wie viele vorgeschlagen haben). – StuFuller

+0

Wenn Sie mit "Nichtstarter" meinen, "Pre-Alpha" dann, ja. Unladen Swallow ist für die Integration mit CPython freigegeben und es gibt keine signifikanten Hindernisse dafür, sobald die entsprechende Arbeit erledigt ist. –

+1

Die Entwickler-Community scheint nicht viel Enthusiasmus zu haben, um Unload Swallow for Python 3 zu folgen. Vielleicht haben sie sich auf die Unterstützung von Google verlassen, aber von der Mailingliste scheint Google diese Entwickler auf andere verschoben zu haben Arbeiten, die für Google eine höhere Priorität haben. –