¿Debo aprender Python 2 o 3?

Una de las mayores fuentes de confusión y desinformación para la gente que quiere aprender Python es qué versión debe aprender.

¿Debo aprender Python 2.x o Python 3.x?

De hecho, esta es una de las preguntas que más nos hacen en Dataquest, donde enseñamos Python como parte de nuestro plan de estudios de Data Science.

Este post da un poco de contexto detrás de la pregunta, explica la pespectiva, y te dice qué versión deberías aprender.

Comencemos echando un breve vistazo a la historia.

Python 3.0 fue lanzado en 2008 (no es una errata – ¡hace 9 años!)

El 3 de diciembre de 2008, Python lanzó la versión 3.0 . Lo especial de esto fue que era una versión incompatible hacia atrás (si quieres leer más sobre el porqué, te recomiendo este excelente post de Brett Cannon)

Como resultado, para cualquiera que estuviera usando Python 2.x en ese momento, migrar su proyecto a 3.x requería grandes cambios. Esto no sólo incluía proyectos y aplicaciones individuales, sino también todas las librerías que forman parte del ecosistema de Python.

El cambio fue visto como algo extremadamente controvertido, y muchos proyectos se resistieron al dolor de pasarse, especialmente en la comunidad de Python científico. La principal librería numérica NumPy tardó dos años en lanzar su primera versión 3.x, tras lo cual otros proyectos empezaron a lanzar versiones compatibles con 3.x en los años siguientes.

En 2012, muchas librerías tenían soporte para 3.x, pero la mayoría seguían escribiéndose en 2.x. Con el tiempo, se lanzaron herramientas que facilitaban la portabilidad del código, pero seguía habiendo una gran resistencia al cambio.

Una gran lectura sobre el tema es el post de Jake VanderPlas de 2013: Will Scientists Ever Move to Python 3?

En los años siguientes, se lanzaron varias herramientas para ayudar a la transición de bases de código antiguas de Python 2 a Python 3.

Originalmente, Python había programado la fecha de «fin de vida» para Python 2.x para 2015, pero en 2014 anunciaron que lo extenderían 5 años, hasta 2020, en parte para aliviar las preocupaciones de aquellos usuarios que aún no pueden migrar a Python 3.

Actualidad

Hoy en día, hay muy pocas bibliotecas que no soporten Python 3. Python 3 Readiness muestra que 344 de los 360 principales paquetes para Python soportan 3.x.

Además, muchos paquetes están anunciando el fin del soporte para 2.x. Python 3 Statement es un proyecto en el que muchas de las principales librerías (científicas) se están comprometiendo a dejar de dar soporte a 2.x en 2020 o antes.

Recientemente, el popular web-framework Django anunció que su nueva 2.0 no soportaría Python 2.x.

¿Por qué sigue siendo una pregunta?

Hay un montón de recursos antiguos y gratuitos en línea para aprender Python que se basan en Python 2, incluyendo la mayoría de los cursos MOOC en lugares como Coursera, Udemy y edX.

Además, el extremadamente popular ‘Learn Python the Hard Way’ de Zed Shaw fue escrito en Python 2.x y no ha sido actualizado. Hasta hace poco, pensaba que esto se debía a que a Zed le daba pereza actualizar su curso, pero recientemente ha publicado un polémico artículo: The Case against Python 3.

También te puede gustar leer la excelente refutación de Eevee: A Rebuttal For Python 3, así como los pensamientos de muchos desarrolladores de software en el hilo de Hacker News para el artículo de Zed).

En resumen – el número de personas que están de acuerdo con el despotrique de Zed son una extrema minoría.

Entonces, ¿qué debería aprender?

Por qué deberías aprender Python 3

Desde una perspectiva, tuve la suerte de entrar en el mundo de Python mucho más recientemente, a principios de 2016. Empecé a aprender Python como parte del plan de estudios de ciencia de datos en Dataquest. Dataquest sólo enseña 3.x, y durante bastante tiempo no sabía de toda esta controversia 2 vs 3.

He utilizado Python 3.x exclusivamente y rara vez me encuentro con problemas de compatibilidad.

Muy de vez en cuando (tal vez una vez cada 3-4 meses), me encontraré con que estoy tratando de ejecutar algo que requiere el apoyo de Python 2, y el virtualenv de Python me permite crear instantáneamente un entorno 2.x en mi máquina para ejecutar esa pieza de software heredado.

Python 3.x es el futuro, y con el soporte de Python 2.x disminuyendo, deberías poner tu tiempo en aprender la versión que te ayudará en el futuro.

Por qué deberías aprender Python 2

No deberías. Muy pronto no habrá futuras correcciones de seguridad o de errores para Python 2.x, y tu tiempo está mejor invertido en aprender 3.x.

En el improbable caso de que acabes trabajando con una base de código heredada de Python 2, herramientas como python-future te facilitarán su uso habiendo aprendido sólo Python 3.

Espero que esto te haya ayudado a entender este controvertido tema y a tomar tu decisión de aprender Python 3.

Dataquest es la mejor plataforma online para aprender a ser un Data Scientist usando Python (¡3.x, por supuesto!).

Tenemos graduados trabajando en SpaceX, Amazon y más. Si eso te interesa, puedes registrarte y completar nuestro primer curso gratis en Dataquest.io

Este post está basado en esta respuesta de Quora

Científico de Datos en Dataquest.io. Amante de los datos y del Aussie Rules Football. Australiano viviendo en Texas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *