Python 2.x ha sido la versión más popular durante más de una década y media. Pero ahora más y más personas están cambiando a Python 3.x. Python3 es mucho mejor que Python2 y viene con muchas características adicionales. Además, Python 2.x se está volviendo obsoleto este año. Por lo tanto, ahora se recomienda comenzar a usar Python 3.x a partir de ahora.
¿Todavía en dilema?
¿Alguna vez te has preguntado qué los separa a ambos? Averigüemos esto a continuación.
En primer lugar, analicemos esta comparación rápida a través de esta imagen, que le dará una idea clara de qué esperar.
Imprimir estado de cuenta
Python 2.7 : el par extra de paréntesis no es obligatorio en esto.
print 'Hello and welcome to GeeksForGeeks'
Python 3.x : el par de paréntesis adicional es obligatorio.
print ('Hello and welcome to GeeksForGeeks')
División entera
Python 2.7 :
el tipo de retorno de una operación de división (/) depende de sus operandos. Si ambos operandos son de tipo int, se realiza una división de piso y se devuelve un int. Si alguno de los operandos es un flotante, se realiza una división clásica y se devuelve un flotante. El operador // también se proporciona para realizar divisiones de piso sin importar cuáles sean los operandos.
print 5 / 2 print -5//2 # Output: # 2 # -3
Python 3.x :
la división (/) siempre devuelve un flotante. Para hacer una división de piso y obtener un resultado entero (descartando cualquier resultado fraccionario), debe usar el operador //.
print (-5 / 2) print (5//2) # Output: # -2.5 # 2
Función de entrada
Python 2.7 :
cuando usa la función input(), Python convierte automáticamente el tipo de datos en función de su entrada.
val1 = input("Enter any number: ") val2 = input("Enter any string: ") type(val1) type(val2)
raw_input
obtiene la entrada como texto (es decir, los caracteres que se escriben), pero no intenta traducirlos a nada más; es decir, siempre devuelve una string.
val1 = raw_input("Enter any number: ") val2 = raw_input("Enter any string: ") type(val1) type(val2)
Python 3.x
En Python3, la función de entrada actúa como raw_input de Python 2.7 y siempre devuelve el tipo de string.
val1 = input("Enter any number: ") val2 = input("Enter any string: ") type(val1) type(val2) # In order to fix this you need to apply # float() function when user is prompted for input.
Función redonda
Python 2.7 : la salida siempre da como resultado un número de punto flotante.
print(round(69.9)) print(round(69.4)) # Output: # 70.0 # 69.0
Python 3.x : la devolución da como resultado una precisión de n dígitos.
print(round(69.9)) print(round(69.4)) # Output: # 70 # 69
Lista de comprensiones
Python 2.7 : consulte el ejemplo a continuación, cómo cambia la variable global.
num = 7 print (num) mylist = [num for num in range(100)] print (num) # Output: # 7 # 99
Python 3.x : no hay ninguna fuga de espacio de nombres ahora. Esto está bastante arreglado ahora.
num = 7 print (num) mylist = [num for num in range(100)] print (num) # Output: # 7 # 7
Función de rango
Python 2.7 :
tiene ambas range
funciones xrange
. Cuando necesite iterar un objeto a la vez, use xrange y cuando necesite una lista real, use la función de rango. xrange es generalmente más rápido y ahorra memoria.
% timeit [i for i in range(1000)] % timeit [i for i in xrange(1000)]
Python 3.x :
aquí range hace lo que hace xrange en Python 2.7. xrange no funciona en Python 3.x.
% timeit [i for i in range(1000)] % timeit [i for i in xrange(1000)]
Manejo de excepciones
Python 2.7 : tiene una sintaxis diferente a la de Python 3.x.
try: YoYo except NameError, error: print error, "YOU HAVE REACHED FOR AN ERROR" try: YoYo except NameError as error: print error, "YOU HAVE REACHED AN ERROR, YET AGAIN !"
Python 3.x : se necesita la palabra clave ‘As’ para incluirla en esto.
try: YoYo except NameError as error: print (error, "THE ERROR HAS ARRIVED !")
Lista de comprensiones
Python 2.7 : paréntesis menor que Python 3.x.
[item for item in 1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
Python 3.x : aquí se necesita un par de paréntesis adicionales.
[item for item in (1, 2, 3, 4, 5)] [1, 2, 3, 4, 5]
función next() y método .next()
Python 2.7 : aquí se utilizan tanto next() como .next().
generator = (letter for letter in 'abcdefg') next(generator) generator.next()
Python 3.x : aquí solo se usa next(). El uso de .next() muestra un AttributeError.
generator = (letter for letter in 'abcdefg') next(generator)
Tipos ASCII, Unicode y Byte
Python 2.7 : tiene un tipo de string ASCII, un tipo Unicode separado, pero no hay un tipo de byte.
type(unicode('a')) type(u'a') type(b'a')
Python 3.x : tenemos strings Unicode y tipo de byte.
type(unicode('a')) # This returns an error
Nota: Lista de métodos y funciones que ya no devuelven la lista en Python 3.x.
In Python2.x - zip() map() filter() dictionary’s .keys() method dictionary’s .values() method dictionary’s .items() method
Publicación traducida automáticamente
Artículo escrito por SohomPramanick y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA