2010-04-02 9 views
26

Ho seguito la saga di Python 3.x e ho visto le funzionalità 3.x gradualmente riavvicinate alla linea 2.x.Python - cosa NON è in 2.7 che IS in 3.1? Così tante cose sono state retro-portate, cosa NON è?

La maggior parte delle librerie che uso non sono stati portati e alcuni (ad esempio Twisted) sembrano velatamente o apertamente ostili alla 3.x a vari livelli. In ogni caso, ci sono stati pochissimi movimenti verso versioni compatibili di molti di loro. Soprattutto quelli più grandi.

Quindi, la mia domanda è, con tutte le caratteristiche che sono state backport, ciò che è ancora disponibile in 3.x che non è stato backported? E 'abbastanza facile trovare ciò che è stato backport, ma non cosa rimane.

In questo momento, il porting per 3.x sembra proprio come tutti i dolori, e non riesco a vedere il guadagno; forse un elenco "Solo in 3.x" mi permetteva di vedere la luce ...

Grazie,

Stu

+5

Contate quelle funzioni importate da 'from __future__ import ???'? – kennytm

+0

Sembra proprio che tu voglia sapere perché dovresti eseguire il porting su Python3. Questo è già stato risposto molte volte. –

+1

No, sto effettivamente cercando di scoprire cosa c'è in Python 3 che non è stato backportato. – StuFuller

risposta

6

La cosa più importante è probabilmente Unicode in tutto. Quindi non c'è più bisogno di giocherellare con str/unicode. Questo suona piccolo ma ha implicazioni (positive) enormi quando si pensa all'interazione del sistema operativo - ad esempio, tutti devono impegnarsi a fornire le stringhe 'utilizzabili' invece di 'una cosa binaria che potrebbe essere un messaggio di errore'.

C'è anche un sacco di roba nell'interprete sé che è stata migliorata. Un esempio è il blocco dell'interprete globale (GIL) che non è scomparso, ma meglio in py3k: presentation+slides

+0

3.3 ha un'implementazione Unicode migliorata. Ci sono altri miglioramenti Unicode e correzioni di bug solo in 3.x corrente. –

3

La velocità potrebbe essere una caratteristica che vale la pena menzionare.

Le imporovements velocità di progetto "a vuoto rondine" sono stati approvati per essere fuse in Python. Ma per quanto ne so solo su Python 3. Vedi PEP 3146 per i dettagli.

+0

AFAIK, gli Stati Uniti sono un non-starter a questo punto a causa di severi requisiti di memoria e lunghi tempi di avvio, anche se sono sicuro che saranno risolti (forse con la pre-profilazione come molti hanno suggerito). – StuFuller

+0

Se per "non-starter" intendi "pre-alpha" allora, sì. Unladen Swallow è stato approvato per essere integrato con CPython, e non ci sono ostacoli significativi a ciò che accade, una volta che il lavoro pertinente viene svolto. –

+1

La comunità di sviluppatori non sembra avere molto entusiasmo nel seguire Unladen Swallow per Python 3. Forse si basavano sul supporto di Google per quel lavoro, ma dalla mailing list sembra che Google abbia spostato quegli sviluppatori su altri lavoro con priorità più alta per Google. –