BlogPython Training

Python 2 frente a Python 3: diferencias importantes que todo pirata informático debe conocer

Python se promociona comúnmente como uno de los mejores lenguajes de programación para que los principiantes aprendan, y su sintaxis y funcionalidad sencillas hacen que sea difícil discutir con eso. Pero muchos tutoriales todavía usan Python 2, que ahora está desactualizado. Python 3 presenta muchas características nuevas, y es importante estar al tanto de ellas en el futuro, así como de las diferencias clave entre Python 3 y su predecesor.

Python 2 se lanzó por primera vez en 2000. Mejoró versiones anteriores del lenguaje e introdujo características comunes a otros lenguajes de programación, como recolección de basura, comprensión de listas y soporte Unicode. La versión 2.1 vio algunas actualizaciones menores y la 2.2 fue lanzada a finales de 2001. La versión 2.2 presentaba la unificación de tipos, que fusionaba tipos y clases en una sola jerarquía, transformando Python en un lenguaje orientado a objetos.

Las versiones progresaron hasta Python 2.7, que iba a ser la última versión importante hasta Python 3. Python 2 se retiró oficialmente el primer día de 2020. Python 3, que comenzó en 2008, es ahora la opción más actual, con la versión 3.8.3 siendo la última actualización.

Función de impresión

La primera y posiblemente la diferencia más notable en Python 3 es la imprimir función. En Python 2, la impresión se puede usar entre paréntesis con comillas simples o dobles:

print('Hello, Null Byte.')
Hello, Null Byte.

or

print("Hello, Null Byte.")
Hello, Null Byte.

O sin, usando solo un espacio entre él y lo que necesita imprimir:

print 'Hello, Null Byte.'
Hello, Null Byte.

or

print "Hello, Null Byte."
Hello, Null Byte.

En Python 3, se deben usar paréntesis:

print('Hello, Null Byte.')
Hello, Null Byte.

or

print("Hello, Null Byte.")
Hello, Null Byte.

Entonces, Python 2 es más versátil en este caso, pero Python 3 hace que el código sea más conciso con menos formas de hacer lo mismo, y eso en realidad puede ser más fácil de aprender y usar.

División entera

Python 3 también maneja la división de números enteros de manera diferente. En la versión 2, dividir dos números enteros daría como resultado un número entero:

print 5 / 3
1

or

print 5/3
1

or

print(5 / 3)
1

or

print(5/3)
1

Para obtener el valor flotante completo con decimales, necesitaría usar decimales para la función de impresión, así:

print 5.0 / 3.0
1.6666666666666667

or

print 5.0/3.0
1.6666666666666667

or

print(5.0 / 3.0)
1.6666666666666667

or

print(5.0/3.0)
1.6666666666666667

Pero en Python 3, se devuelve un valor flotante sin importar si usa decimales o solo números enteros (aunque, debe usar paréntesis):

print(5 / 3)
1.6666666666666667

or

print(5/3)
1.6666666666666667

or

print(5.0 / 3.0)
1.6666666666666667

or

print(5.0/3.0)
1.6666666666666667

Python 3 es más cómo funcionaría una calculadora, que es mucho más fácil de entender y recordar para las personas que recién comienzan a usar Python.

Función de rango

En Python 2, el xrange La función se usa para iteración, en bucles for, así como para iterar a través de una lista o diccionario:

for x in xrange(1, 10):
    print(x)

En la versión 3, xrange se reemplaza por el distancia función:

for x in range(1, 10):
    print(x)

La ventaja de xrange es que es más rápido cuando se itera sobre una lista una vez. Sin embargo, no admite empalmes y otros métodos orientados a listas, por lo que ahora se prefiere usar rango.

Unicode

Python 2 almacena implícitamente cadenas como valores ASCII. Para almacenarlos usando Unicode, debe especificarse con tu al igual que:

print(u'This is Unicode')
This is Unicode

or

print(u"This is Unicode")
This is Unicode

vs.

print('This is NOT Unicode but ASCII')
This is NOT Unicode but ASCII

or

print("This is NOT Unicode but ASCII")
This is NOT Unicode but ASCII

En Python 3, las cadenas ahora se tratan como Unicode de forma predeterminada, por lo que no es necesario especificar:

print(u'This is Unicode')
This is Unicode

or

print(u"This is Unicode")
This is Unicode

vs.

print('This is ALSO Unicode')
This is ALSO Unicode

or

print("This is ALSO Unicode")
This is ALSO Unicode

Excepciones

La forma en que se manejan las excepciones y los errores ha cambiado en Python 3. En la versión 2, las excepciones se ven así:

try:
    checking_error
except NameError, err:
    print err, ‘Error found’

En la versión 3, necesitamos agregar el como palabra clave:

try:
    checking_error
except NameError as err:
    print(err, ‘Error found’)

Python 3 también maneja la forma en que se generan las excepciones. En la versión 2:

raise IOError, ‘error’

En la versión 3, se requieren paréntesis:

raise IOError(‘error’)

Fuga variable

En Python 2, las variables en un bucle for se filtrarán en el espacio de nombres global. Esto significa que las variables globales pueden cambiar mientras están dentro del ciclo. En Python 3, se modificó y el valor de las variables nunca cambia.

Módulo futuro

Python 3 agregó ciertas palabras clave y características que no son compatibles con Python 2. Afortunadamente, hay una manera fácil de usar la funcionalidad de la versión 3 en el código que ejecuta Python 2: el módulo _future_. Para ayudar a migrar a Python 3, simplemente use importaciones futuras:

from _future_ import division

Ahora hay soporte para Python 3 en el código Python 2.

Ventajas de Python 3

Ahora que hemos repasado los cambios en Python 3, es fácil ver algunas de las ventajas que tiene sobre la versión retirada. Cosas como la función de impresión que realmente se comporta como una función son agradables, así como la forma en que se maneja la división. La compatibilidad con Unicode es otra ventaja que 3 tiene sobre 2: ya no tendrá que preocuparse por especificarlo. El manejo de errores también es más robusto en Python 3 y permite un seguimiento y depuración más fáciles.

Uno de los objetivos principales de Python 3 era eliminar parte de la redundancia que estaba presente en la versión 2. Dado que los principiantes suelen recomendar y utilizar este lenguaje, los desarrolladores querían dejar en claro que solo había una forma de realizar un determinado acción. Por último, la mayor ventaja de Python 3 es que se está desarrollando activamente, lo que permite que la base de código sea más eficiente y funcional a medida que pasa el tiempo.

Python 2 está oficialmente retirado, así que únase a la fiesta y migre a Python 3 lo antes posible. Y aquellos de ustedes con aplicaciones originales de Python en GitHub, asegúrese de actualizar a Python 3 para que sus usuarios no tengan problemas.

Imagen de portada de Cg__Prodigy / Pixabay

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar