2010-08-02 8 views
8

Aprendí Python como mi primer lenguaje serio (no BÁSICO) hace unos 10 años. Desde entonces, aprendí muchos otros, pero tiendo a 'pensar' en Python. Cuando miro la lista de cambios, no veo uno Necesito esta característica. Normalmente me digo a mí mismo, hmm, esa sería una buena manera de hacerlo, pero ¿por qué cambiarlo ahora?¿Por qué Python 3 (o posterior) es mejor que Python 2?

Cosas como el cambio de la división de suelo por defecto podría ser un verdadero dolor de cabeza para cambiar para grandes proyectos. Parece que los jugadores principales están arrastrando los pies. ¿Cuál es la característica clave que me haría querer invertir en otra curva de aprendizaje?

+7

"podría ser un verdadero dolor de cabeza para cambiar para grandes proyectos"? De Verdad? Creo que con un diseño razonablemente bueno, la matemática está razonablemente centralizada y esto llevaría a una simplificación. "otra curva de aprendizaje"? ¿De qué estás hablando? Python 3 casi no implica aprendizaje, implica "desaprender" Python 2 hack-arounds. ¿Qué estas diciendo? ¿Tiene ejemplos específicos de esta "curva de aprendizaje"? –

+1

Es un buen punto. ¿Por qué Python3 * no * debería ser mejor? ¿Por qué molestarse con una versión 3 si es peor? –

Respuesta

10

Como una característica clave, mucha gente parece estar bastante salido sobre (supposedly) soporte Unicode transparente. Lo cambiaron de str (array char de 8 bits/tipo de cadena por defecto) y unicode (cadena unicode), a str (cadena por defecto (compatible con unicode)) y bytes (datos binarios como 'cadena' de 8 bits).

(creo que la separación de las listas de bytes de las cadenas es una gran idea, pero también odio Unicode, por lo que en todo caso, esto sería un peor para mí personalmente.)

+7

+1. odio lidiar con cadenas unicode y no mixtas mixtas. – mpen

+1

El tratamiento de cadenas no unicode en 2.X es un problema. Especialmente si tiene que "actualizar" un programa que solo se escribió con el conjunto de caracteres ascii en mente. Quiero cambiar solo por esta razón. – monkut

+0

Sí, odio todo este desastre str/unicode y adopté "TODAS las cadenas deberían ser unicode!" se acerca mucho tiempo atrás, pero todavía se ocupa de arreglar cosas que obtengo de paquetes de terceros. –

1

Cosas como el cambio de piso por defecto división podría ser un verdadero dolor de cambio para grandes proyectos.

Si había comenzado a hacer el cambio hace 8 años cuando Python 2.2 fue introducido con // y from __future__ import division, no sería un dolor ahora. Personalmente, estoy contento de finalmente deshacerse de la división de estilo antiguo!

Mi segunda característica favorita de Python 3.x es la distinción str/bytes. Además de facilitar el soporte de Unicode, bytes es mucho más conveniente para la base de datos BLOB que buffer.

Cuestiones relacionadas