¿Qué características de Python 3.0 cambiarán tu codificación diaria?[cerrado]

StackOverflow https://stackoverflow.com/questions/340972

  •  19-08-2019
  •  | 
  •  

Pregunta

Py3k acaba de salir y tiene pegotes de cosas nuevas y ordenadas!Tengo curiosidad, ¿qué es lo que más entusiasma a los SO pythonistas?¿Qué características afectarán la forma en que escribe código a diario, o las estaba esperando con ansias?

¿Fue útil?

Solución

Hay algunas cosas que me interesan bastante:

Otros consejos

Espero que encadenamiento de excepciones se ponga de moda. Perder rastros de la pila de excepción debido al antipatrón presentado a continuación había sido mi motivo favorito durante mucho tiempo:

try:
   doSomething( someObject)
except:
   someCleanup()

   # Thanks for passing the error-causing object,
   # but the original stack trace is lost :-(

   raise MyError("Bad, bad object!", someObject)

Lo sé, lo sé, agregar información de contexto a la excepción original y preservar el seguimiento de la pila original fue posible, pero requirió un truco realmente feo. Ahora puede (y debería! ) simplemente:

raise MyError("Bad, bad object!", someObject) from original_exception

y obtener fácilmente los dos anteriores. Entonces, como parte de mi misión sagrada contra los rastros de pila perdida:

Amigos, ¡no olviden la cláusula de cuando vuelvan a plantear excepciones! Gracias.

Francamente, nada de eso. Aunque probablemente me encuentre usando parte de la nueva sintaxis, principalmente uso Python para scripts rápidos y simples y expresiones regulares.

Creo que las nuevas funciones harán que muchas cosas pequeñas sean un poco más fáciles para muchas personas y algunas cosas grandes fáciles para algunas personas. Sin embargo, soy escéptico ante cualquier afirmación de que muchas personas terminarán encontrando ganancias masivas en productividad.

En resumen, creo que estos cambios mejorarán un poco las cosas en general, pero no esperes ningún milagro.

No es tanto una característica, pero creo que la limpieza de la biblioteca será de gran ayuda, especialmente. a nuevos programadores de python. En más de una ocasión, he querido hacer algo en Python solo para encontrar dos bibliotecas incluidas que ofrezcan esa funcionalidad, sin ninguna razón obvia por la que deba elegir una sobre la otra.

Aquí hay un buen artículo que explica las nuevas características y / o diferencias con respecto a python 2.x versos python 3.

http: //www.b-list. org / weblog / 2008 / dec / 05 / python-3000 /

A pesar de lo que hicieron para lograr el curso de migración más pequeño posible con lenguajes interpretados, encuentro el lanzamiento completo de python3 como diez años de dolorosa ruta de migración. Por lo tanto, no lo encuentro particularmente atractivo.

Las mejoras que hicieron son buenas e importantes. Dos tipos diferentes de cadenas han sido una fuente real de molestias en todas partes, por lo tanto, es bueno que se hayan librado del objeto unicode y hayan introducido el objeto bytes a un lado ahora unicode str.

El cambio bignum vs. num fue por conveniencia y creo que también fue una buena opción. En general, limpiaron el lenguaje de los componentes dañinos que acumularon durante los últimos diez años.

La segunda peor cosa que hicieron fue una implementación un 10% más lenta, como si la velocidad ya no fuera el problema de Python.

Creo que el lanzamiento de python3 derriba la reputación de python en lugar de mejorarla. En este momento están de vuelta al principio con su idioma cuando se trata del soporte de la biblioteca.

No tener que hacer tanto..

  • No tener que preocuparse por usar unicode() o u"".

  • No tener que buscar en los documentos de urllib urllib2 y httplib para encontrar dónde funciona eso, necesito codificar un archivo y cargarlo mediante una solicitud POST

  • No tener que preocuparse por si except TypeError, something: atrapará un TypeError y something, o TypeError en "algo..."

Y a la inversa, ¡tener que volver a consultar los documentos!Conozco bastante bien Python y ahora puedo hacer la mayoría de las cosas sin consultar pydoc, pero cada vez que lo hago, descubro algún otro módulo o función útil.

La declaración de impresión. <sniff> Ya estoy empezando a extrañarlo.

En realidad, incluso antes de ir a Python 2.6, estamos purgando print a favor de logging.debug. Esto es solo para dejar el hábito de usar <=> casualmente para depuración, soporte y desarrollo.

Lo que queda son algunos programas que realmente producen cosas en stdout. Para aquellos, podemos introducir un 2.6 / 3.0 compatible & Quot; print & Quot; funcionar en una de nuestras bibliotecas.

Las comprensiones de diccionario no son necesariamente devastadoras, pero son muy agradables.

Si bien {k: v for k, v in list} es más largo que dict(list) es más flexible y se explica por sí mismo.

Una de las características más subestimadas de Python 3 es la introducción de clases base abstractas. Esto es algo que no revolucionará la programación de Python de inmediato, pero representa un cambio interesante de un enfoque de tipeo flexible en la dirección de interfaces mejor definidas.

Se puede encontrar más información en PEP 3119 .

Casi todos ellos, ya que estoy tomando el lanzamiento de Python 3 como motivación para aprender el idioma.

Unicode (utf-8) es realmente importante para las personas que viven en países que no hablan inglés.

No me gustaba especificar la codificación al comienzo del archivo, porque siempre lo olvido. Por lo general, mi texto es compatible con ASCII porque estoy usando UTF-8, por lo que funciona sin la especificación de codificación. Pero si escribo mi nombre (con acento) o un & # 8364; signo, se rompe ... ¡Terminé escribiendo caracteres Unicode con su representación \ uxxxx pero es algo críptico!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top