Saltar al contenido

Python 2 Vs Python 3 con ejemplos

Python es un lenguaje de programación de uso general, de alto nivel y muy versátil e interpretado. Fue creado por Guido van Rossum y lanzado por primera vez en 1991. La filosofía de diseño de Python enfatiza la legibilidad del código y la facilidad de uso. Desde entonces, Python ha ganado popularidad y es una excelente opción en scripting y desarrollo rápido de aplicaciones.

Muchas aplicaciones heredadas todavía están escritas en Python 2. Las empresas que enfrentan una migración a Python 3 requieren conocer las diferencias tanto en la sintaxis como en el comportamiento. El propósito de este artículo es delinear las diferencias entre Python 2 y Python 3. Con ejemplos, verá cómo las funciones se ven sintácticamente iguales en una versión pero se comportan completamente diferente en otra versión.

Versión de Python más utilizada

La versión más reciente de Python es 3.7 se lanzó en 2018. La próxima versión 3.8 está actualmente en desarrollo y se lanzará en 2024. Aunque Python 2.7 todavía se usa ampliamente. La adopción de Python 3 está creciendo rápidamente. En 2016, el 71,9% de los proyectos Python usado 2,7, pero en 2017 había caído al 63,7%.

¿Qué versión debo usar?

Dependiendo de cuáles sean tus necesidades y de lo que quieras hacer, elige la versión que más te ayude. Si puede hacer exactamente lo que quiere con Python 3.x, ¡genial! Sin embargo, existen algunas desventajas como:

  • Soporte de biblioteca un poco peor
  • Algunas distribuciones de Linux y Mac actuales todavía usan 2.x por defecto

Siempre que Python 3.x esté instalado en las computadoras de sus usuarios (que en la mayoría de los casos se debe a que la mayoría de las personas que leen esto están desarrollando algo para ellos mismos o en un entorno que controlan) y usted está escribiendo cosas en las que no conoce nada de Python 2 Se necesitan módulos .x, es una excelente opción. Además, la mayoría de las distribuciones de Linux ya tienen instalado Python 3.xy casi todas lo tienen disponible para los usuarios finales. Una advertencia puede ser si Red Hat Enterprise Linux (a través de la versión 7) donde Python 3 existe en el repositorio de EPEL, pero es posible que algunos usuarios no puedan instalar nada desde ubicaciones de complementos o ubicaciones no seguras. Además, algunas distribuciones están eliminando Python 2 como su instalación predeterminada anterior.

Los instructores deberían presentar Python 3 a los nuevos programadores, pero debatir las diferencias en Python 2.

Abstenerse de comenzar cualquier nuevo desarrollo en Python 2 porque a partir de enero de 2020, Python 2 será EOL (“Fin de la vida útil”), lo que significa que todo el soporte oficial cesará.

¿Cuál es la diferencia entre Python 2 y 3?

La principal diferencia es que algunas cosas deberán importarse de diferentes lugares para poder manejar el hecho de que tienen diferentes nombres en Python 2 y Python 3. En consecuencia, el paquete de compatibilidad seis es una utilidad clave para admitir Python 2 y Python 3. en una única base de código.

Discutiremos las principales diferencias en cada sección de este artículo y proporcionaremos ejemplos de capturas de pantalla de la consola tanto en Python 2 como en Python 3.

Bibliotecas: Python 2 vs Python 3

Desde el punto de vista de la biblioteca, las bibliotecas son muy diferentes en Python 2 frente a Python 3. Muchas bibliotecas desarrolladas para Python 2 no son compatibles con Python 3. Los desarrolladores de bibliotecas utilizadas en Python 3 tienen buenos estándares y han mejorado el aprendizaje automático y el aprendizaje profundo. Bibliotecas.

División de enteros en Python 2 y 3

La división de enteros es la división de dos números menos la parte fraccionaria. En Python 2, obtienes exactamente para qué se definió la división de enteros.

Ejemplo 1. División de enteros en Python 2.

En la captura de pantalla de la consola a continuación, verá la división de dos enteros. El resultado en Python 2 también es un número entero. Falta la parte fraccionaria.

Ejemplo 2. División de enteros en Python 3.

En la captura de pantalla de la consola a continuación, verá la división de dos enteros en Python 3. El resultado es un número de punto flotante que incluye la parte fraccionaria que falta en Python 2.

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

Si se requiere la parte fraccionaria en Python 2, puede especificar uno de los enteros que está dividiendo como un número de punto flotante. De esa forma, obliga al resultado a ser un número de punto flotante.

Sintaxis de declaración de impresión Python 2 vs 3

En Python 2, print es una declaración que toma varios argumentos. Imprime los argumentos con un espacio entre ellos. En Python 3, print es una función que también toma varios argumentos.

Ejemplo 3. Imprimir declaración en Python 2

En este ejemplo, usamos la declaración print con tres argumentos. Observe que Python 2 imprime los tres argumentos separados por un espacio. A continuación, usamos la declaración print con corchetes alrededor de los tres argumentos. El resultado es una tupla de tres elementos.

Ejemplo 4. Función de impresión en Python 3.

En este ejemplo, usamos la función de impresión con tres argumentos y obtenemos el mismo resultado que en el Ejemplo 3 con Python 2. Sin embargo, cuando queremos imprimir la tupla, tenemos que rodear la tupla con otro conjunto de corchetes redondeados.

Para obtener el mismo resultado en Python 2 que Python 3, podemos usar la directiva futura para indicarle al compilador que use una función que esté disponible en una versión futura.

Ejemplo 5. Directiva futura en Python 2.

Soporte Unicode en Python 2 vs Python 3

En Python 2, cuando abre un archivo de texto, la función open () devuelve una cadena de texto ASCII. En Python 3, la misma función open () devuelve una cadena Unicode. Las cadenas Unicode son más versátiles que las cadenas ASCII. Cuando se trata de almacenamiento, debe agregar una “u” si desea almacenar cadenas ASCII como Unicode en Python 2.

Ejemplo 6. Cadenas en Python 2

Ejemplo 7. Cadenas en Python 3.

En Python 2, hay dos tipos diferentes de objetos que se pueden usar para representar una cadena. Estos son ‘str’ y ‘unicode’. Las instancias de ‘str’ son representaciones de bytes, mientras que con Unicode, son enteros de 16 o 32 bits. Las cadenas Unicode se pueden convertir en cadenas de bytes con la función encode ().

En Python 3, también hay dos tipos diferentes de objetos que se pueden usar para representar una cadena. Estos son ‘str’ y ‘bytes’. La ‘str’ corresponde al tipo ‘unicode’ en Python 2. Puede declarar una variable como ‘str’ y almacenar una cadena en ella sin anteponerla con una ‘u’ porque ahora es la predeterminada. ‘Bytes’ corresponde al tipo ‘str’ en Python 2. Es un formato de serialización binario representado por una secuencia de enteros de 8 bits que es ideal para enviarlo a través de Internet o para almacenarlo en el sistema de archivos.

Manejo de errores Python 2 vs Python 3

El manejo de errores en Python consiste en generar excepciones y proporcionar controladores de excepciones. La diferencia entre Python 2 y Python 3 es principalmente sintáctica. Veamos algunos ejemplos.

Ejemplo 8. Generar errores en Python 2.

En la captura de pantalla de la consola a continuación, intentamos generar un error en ambos formatos y funciona.

Ejemplo 9. Generar errores en Python 3.

En la captura de pantalla de la consola a continuación, generar un error no funciona en Python 3 como lo era en Python 2.

Con los controladores de excepciones, la sintaxis ha cambiado ligeramente en Python 3.

Ejemplo 10. Bloque Try y Exception en Python 2.

En la captura de pantalla de la consola a continuación, especificamos un bloque try con un controlador de excepciones. Provocamos un error deliberadamente al especificar un nombre indefinido en el ‘intento’.

Ejemplo 11. Bloque Try y Exception en Python 3.

En la captura de pantalla de la consola a continuación, especificamos el mismo código que el ejemplo anterior en Python 2. Observe la nueva sintaxis en Python 3, que requiere que usemos la palabra ‘como’.

Comparación de tipos no ordenables

En Python 2, era posible comparar tipos que no se podían ordenar, como una lista con una cadena.

Ejemplo 12. Comparación de una lista con una cadena.

Ejemplo 13. Comparación de una lista con una cadena en Python 3.

Como novedad en Python 3, se genera un TypeError si intenta comparar una lista con una cadena.

XRange en Python 2 vs Python 3

En Python 2, existe la función range () y la función xrange (). La función range () devolverá una lista de números, mientras que la función xrange () devolverá un objeto.

En Python 3, solo existe la función range () y no la función xrange (). La razón por la que no hay una función xrange () es porque la función range () se comporta como la función xrange () en Python 2. En otras palabras, la función range () devuelve el objeto range.

Ejemplo 14. La función Range () y XRange () en Python 2.

En la captura de pantalla de la consola a continuación, vemos que la función range () devuelve una lista que contiene 5 elementos porque pasamos ‘5’ como argumento. Cuando usamos xrange (), obtenemos un objeto en su lugar.

Ejemplo 15. La función Range () en Python 3.

Como puede ver en la captura de pantalla de la consola a continuación, ingresar la función range () con ‘5’ como argumento hace que se devuelva un objeto. Sin embargo, cuando intentamos usar la función xrange (), vemos que a Python 3 no le gusta porque no está definido.

En Python 2, había una serie de funciones que devuelven listas. En Python 3, se realizó un cambio para devolver objetos iterables en lugar de listas. Esto incluye las siguientes funciones:

  • Código Postal()
  • mapa()
  • filtrar()
  • Método .key () del diccionario
  • Método .values ​​() del diccionario
  • Método .items () del diccionario

Módulo futuro en Python 2 vs 3

Si está planeando la compatibilidad con Python 3 para su código de Python 2, es posible que desee agregar el módulo __future__. Por ejemplo, la división de enteros había cambiado de Python 2 a 3, pero si desea que su código de Python 2 se comporte como Python 3, todo lo que tiene que hacer es agregar esta línea:

“De la división de importación __future__”

Ahora, en su código Python 2, dividir dos enteros dará como resultado un número de punto flotante.

Ejemplo 16. Importación desde el módulo __future__.

Como puede ver a continuación, cuando dividimos 2/3, obtenemos 0, que es de tipo entero. Pero después de importar la división del módulo __future__, 2/3 devolvieron el tipo de número de punto flotante.

Hay otras cosas que puede especificar para facilitar sus futuras migraciones. Incluyen:

  • Generadores
  • División
  • Importación_absoluta
  • With_statement
  • Función_impresión
  • Unicode_literals

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.