- Operador de división
- Función print
- Unicode
- xrange
- Manejo de errores
- Módulo futuro
Operador de división
Si estamos portando nuestro código o ejecutando código de python 3.x en python 2.x, puede ser peligroso que los cambios en la división de enteros pasen desapercibidos (ya que no levanta ningún error). Es preferible utilizar el valor flotante (como 7,0/5 o 7/5,0) para obtener el resultado esperado al portar nuestro código.
print
7
/
5
print
-
7
/
5
Este es el cambio másconocido. En él, la palabra clave print en Python 2.x se sustituye por la función print() en Python 3.x. Sin embargo, los paréntesis funcionan en Python 2 si se añade espacio después de la palabra clave print porque el intérprete lo evalúa como una expresión.
print
iv 'Hello, Geeks'
print
(
'Hope You like these facts'
)
Unicode:
En Python 2, un tipo str implícito es ASCII. Pero en Python 3.x el tipo str implícito es Unicode.
print
(
type
(
'default string '
))
print
(
type
(b
'string with b '
))
print
(
type
(
'default string '
))
print
(
type
(u
'string with b '
))
xrange() de Python 2.x no existe en Python 3.x. En Python 2.x, range devuelve una lista, es decir, range(3) devuelve mientras que xrange devuelve un objeto xrange, es decir, xrange(3) devuelve un objeto iterador que funciona de forma similar al iterador de Java y genera un número cuando es necesario.
Si necesitamos iterar sobre la misma secuencia varias veces, preferimos range() ya que range proporciona una lista estática. xrange() reconstruye la secuencia cada vez. xrange() no soporta slices y otros métodos de lista. La ventaja de xrange() es que ahorra memoria cuando la tarea es iterar sobre un rango grande.
En Python 3.x, la función range ahora hace lo que xrange hace en Python 2.x, así que para mantener nuestro código portable, podríamos querer seguir usando un rango en su lugar. Así que la función range de Python 3.x es xrange de Python 2.x.
for
x
in
xrange
(
1
,
5
):
print
(x),
for
x
in
range
(
1
,
5
):
print
(x),
Manejo de errores:
Hay un pequeño cambio en el manejo de errores en ambas versiones. En python 3.x, se requiere la palabra clave ‘as’.
try
:
trying_to_check_error
except
NameError, err:
print
err,
'Error Caused'
try
:
trying_to_check_error
except
NameError as err:
print
(err,
'Error Caused'
)
Módulo__futuro__:
Esto básicamente no es una diferencia entre las dos versiones, pero es algo útil de mencionar aquí. La idea del módulo __future__ es ayudar a migrar a Python 3.x.
Si estamos planeando tener soporte para Python 3.x en nuestro código 2.x, podemos usar importaciones _future_ en nuestro código.
Por ejemplo, en el código de Python 2.x de abajo, utilizamos el comportamiento de división de enteros de Python 3.x usando el módulo __future__.
from
__future__
import
division
print
7
/
5
print
-
7
/
5
1.4 -1.4
Otro ejemplo en el que usamos paréntesis en Python 2.x utilizando el módulo __future__:
from
__future__
import
print_function
print
(
'GeeksforGeeks'
)
GeeksforGeeks
Consulta esto para más detalles del módulo __future__.
Este artículo ha sido aportado por Arpit Agarwal. Si te gusta GeeksforGeeks y quieres contribuir, también puedes escribir un artículo y enviarlo por correo a [email protected]. Verás tu artículo aparecer en la página principal de GeeksforGeeks y ayudarás a otros Geeks.