Lenguajes de Programación

Videotutorial: ¿Qué es mejor Python 2 o Python 3?

Conoce las principales diferencias entre Python 2 y Python 3 y decídete que versión es la que hay que usar a día de hoy.

Publicado el 25 de Abril de 2017
Compartir

 

Desde finales de 2008, cuando Python sacó la versión 3.0, coexisten dos versiones de este lenguaje de programación. La versión 2.x y la versión 3.x, esto nos plantea muchas dudas sobre qué versión debemos utilizar , en este artículo veremos como está el panorama respecto a estas dos versiones.

Hasta 2010 se sacaban versiones paralelas de las dos versiones que compartían mejoras, pero desde la 2.7 lanzada en 2010, las únicas actualizaciones han venido para la versión 3.x. Cierto es que han ido arreglando ciertos bugs en la version 2.7, pero sin mejoras o grandes cambios en dicha versión. La realidad es que la única versión que está en desarrollo es la 3.x , actualmente en la versión 3.6.

La versión 3.0, nos trajo muchos cambios en Python respecto a la versión 2 . Se mejoró el soporte Unicode además de una separación bytes/Unicode con mayor lógica. Otros cambios en el lenguaje han sido print y exec que han sido ajustadas para ser más legibles y coherentes, siguiendo la filosofía de Python, ser un lenguaje limpio y legible.

Debido a estos cambios, se ha producido que ambas versiones no sean compatibles entre ellas y por ello, gran cantidad de librerías y módulos desarrollados para la versión 2.x no pueden ser usadas (de momento) en 3.x, aunque a día de hoy las más importantes están ya disponibles para las dos versiones. En esta web http://python3wos.appspot.com/ puedes ver cuales están disponibles y cuales no, como puedes ver más de un 90% están ya disponibles para la última versión de Python y las que no, están siendo migradas poco a poco.

¿Qué versión usar o aprender?

Lo ideal es aprender o empezar a trabajar con la versión 3.x que es la versión que se va a seguir desarrollando y dando soporte, el único motivo para empezar un proyecto con la versión 2.x, ya la hemos comentado, existe un soporte de bibliotecas ligeramente menor para la versión 3.x. Pero si tu proyecto se puede hacer con la última versión de Python igual que con la versión 2.x, deberías de utilizar l a versión 3.x, que es el presente y futuro, no dudes en ello .

Si necesitamos más razones, Python 2.x es un lenguaje "antiguo" con mucho fallos, y se necesita una versión principal para resolverlos, cosa que no pasará. No te alarmes si estás usando la versión 2.x, algunas de las mejoras de seguridad menos dramáticas en 3.0 y 3.1 se han portado a la 2.6 y 2.7​​, respectivamente.

Diferencias entre 2.x y 3.x

Ahora vamos a ver algunas diferencias prácticas en la sintaxis y estructura que hay entre las dos versiones.

 

 

En python2:

print "hola mundo"

En python3:

print ("Hola mundo")

División de números enteros

En python 2 al dividir enteros, siempre el resultado era un entero, en python3 el resultado es un número real.

En python2:

>>> 4/3
1

En python3:

>>> 3/2
1.5

>>> num = 3/2
>>> type(num)
<class 'float'>
>>> num = 4/2
>>> type(num)
<class 'float'>

Las “cadenas” (strings) son Unicode de forma predeterminada en python 3

En python2 existe dos tipos diferenciados de cadenas: str (ascii) y unicode, en python 3 todas las cadenas son unicodes.

En python2:

>>> cad = "piña"
>>> cad
'pi\xc3\xb1a'

En python3:

>>> cad = "piña"
>>> cad
'piña'

Generación de listas de número

En python2 teníamos dos funciones parecidas: range que generaba una lista de números, y xrange que era una función que devolvía un objeto de tipo xrange. La diferencia entre ambas era que utilizar esta última era mucho más eficiente. E python3 sólo tenemos range que ha pasado a ser un tipo de datos.

En python2:

>>> range(1,10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> xrange(1,10)
xrange(1, 10)
>>> type(xrange(1,10))
<type 'xrange'>

En pyton3:

>>> range(1,10)
range(1, 10)
>>> type(range(1,10))
<class 'range'>

Input es una cadena de texto en python 3

En python 2 habían dos funciones para ingresar datos por un teclado raw_input() en que lo ingresado se trataba como una cadena de texto e input() en lo que se ingresaba se evaluaba y se trataba por su tipo. En python 3, se eliminó el input() de python 2 quedando el raw_input() como el nuevo input(). O sea el input() de python 3 siempre devuelve una cadena de texto.

En python2:

>>> cad=raw_input()
123
>>> type(cad)
<type 'str'>
>>> num=input()
123
>>> type(num)
<type 'int'>

En python3:

>>> num=input()
123
>>> type(num)
<class 'str'>

Comparando tipos

Python 3 nos indica un error cuando intentamos comparar tipos de datos diferentes.

En python2:

>>> [1,2] > "hola"
False

En python3:

>>> [1,2] > "hola"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: list() > str()

Como ves hay suficientes motivos para empezar aprender Python 3 y crear tus proyectos con esta versión, y dejar que la versión 2 vaya desapareciendo poco a poco. El futuro y presente de Python es la versión 3.


Compartir este post

También te puede interesar...

Tecnología

Por qué aprender a programar Python

24 Abril 2017 José Domingo Muñoz
Python 3

Curso de Python: Aprende a programar en Python 3

10 horas y 16 minutos · Curso

Tu pasaporte a sabelotodo de Python. Desde las bases hasta la creación de tu primer programa, este curso potenciará tu comprensión de uno de los …

  • Lenguajes de programación
Artículos
Ver todos