2010-08-02 4 views
8

Ho imparato Python come il mio primo linguaggio serio (non BASIC) circa 10 anni fa. Da allora ne ho appreso molti altri, ma tendo a "pensare" in Python. Quando guardo l'elenco delle modifiche, non ne vedo uno Ho bisogno di questa funzione. Di solito dico a me stesso, hmm sarebbe stato un buon modo di farlo, ma perché cambiarlo ora?Perché Python 3 (o successivo) è migliore di Python 2?

Le cose come cambiare la divisione del pavimento di default potrebbe essere una vera pena cambiare per i grandi progetti. Sembra che i giocatori principali stiano trascinando i loro piedi. Qual è la caratteristica chiave che mi farebbe desiderare investire in un'altra curva di apprendimento?

+7

"potrebbe essere un vero dolore cambiare per i grandi progetti"? Veramente? Penserei che con un design ragionevolmente buono, la matematica sia ragionevolmente centralizzata e ciò porterebbe ad una semplificazione. "un'altra curva di apprendimento"? Di cosa stai parlando? Python 3 non richiede quasi alcun apprendimento, ma implica "disimparare" Python 2 hack-arounds. Che dici? Avete esempi specifici di questa "curva di apprendimento"? –

+1

È un punto giusto. Perché Python3 * non dovrebbe essere migliore? Perché preoccuparsi di una versione 3 se è peggio? –

risposta

10

Come caratteristica fondamentale, molte persone sembrano essere piuttosto uscite (supposedly) supporto unicode trasparente. Lo hanno modificato da str (array char a 8 bit/tipo stringa predefinito) e unicode (stringa unicode), a str (stringa predefinita (Unicode Compatable)) e bytes (dati binari come "stringa" a 8 bit).

(penso separazione delle liste di byte da stringhe è grande idea, ma ho anche odio unicode, quindi, se non altro, questo sarebbe un male per me personalmente.)

+7

+1. odio trattare con stringhe unicode miste e non Unicode. – mpen

+1

Affrontare stringhe non Unicode in 2.X è un dolore. Soprattutto se devi "aggiornare" un programma che è stato scritto solo con il set di caratteri ascii in mente. Voglio cambiare solo per questo motivo. – monkut

+0

Sì, odio tutto questo pasticcio str/unicode e ho adottato "TUTTE le stringhe dovrebbero essere unicode!" approccio molto tempo fa, ma si occupa comunque di sistemare le cose che ricevo da pacchetti di terze parti. –

1

Cose come la modifica al piano di default divisione potrebbe essere un vero e proprio dolore per cambiamento per grandi progetti.

Se aveva iniziato a fare il cambiamento 8 anni fa, quando Python 2.2 è stato introdotto con // e from __future__ import division, non sarebbe un dolore ora. Personalmente, sono contento di finalmente sbarazzarsi della divisione vecchio stile!

La mia seconda caratteristica preferita di Python 3.x è la distinzione str/bytes. Oltre a semplificare il supporto Unicode, bytes è molto più conveniente per il database BLOB s rispetto a buffer.