asd

redaccion@diariodigitalis.com

Python 3.9.0rc2 ya está disponible

Desde que vio la luz en 1991, Python ha cumplido ya casi 30 años. Su creador, Guido Van Rossum, tenía el objetivo de crear un lenguaje más fácil, legible e intuitivo para los desarrolladores y, a la vez, tan potente como el de sus principales competidores. Además, nació como un proyecto de código abierto (Open Source), por lo que todo aquel que estuviera interesado podía aportar su granito de arena. Todo esto sumado a su versatilidad, ya que permite utilizar y combinar distintos tipos de programación (imperativa, funcional y orientada a objetos), se convertirían en las claves de su éxito.

A pesar de sus casi tres décadas de existencia y a diferencia de otros lenguajes menos longevos (véase Java), Python ha contado con apenas 3 versiones distintas; sin embargo, con el surgimiento de esta última, la segunda ya ha quedado obsoleta y, por lo tanto, los programadores acostumbrados a utilizarla tendrán que adaptarse a los nuevos cambios y migrar a Python 3 definitivamente.

A continuación, indicaremos cuáles han sido los cambios más notorios de esta nueva versión:

Sólo es compatible con Windows 10

Hay dos posibles inconvenientes con el nuevo Python: El primero es que utiliza por defecto el instalador de 64 bits y el segundo -y más contundente- que no dará soporte a versiones anteriores a Windows 10. Así que para empezar a usarlo, hay que despedirse de cualquier otra versión.

Las nuevas propuestas de mejora de Python (Python Enhancement Proposals o PEP)

Al ser de código abierto, Python permite que su comunidad de usuarios pueda plantear algunos cambios en su estructura o sintaxis por medio de nuevas propuestas (PEP) que pueden implementarse o no una vez revisadas. Entre las más importantes que han llegado a buen puerto, encontramos las siguientes:

  • PEP 584

Esta propuesta añade nuevos operadores de unión a la clase dict: | (merge) y |=(update) (unir y actualizar respectivamente). Esta clase es usada para determinar una clave y su valor, por ejemplo: {‘key1’: 1.0, ‘key2’: False}

Se ha planteado este cambio porque el método para unir dos dicts tenía una serie de inconvenientes. Ahora para realizar dicha unión, el nuevo dict debe tener un valor a la izquierda combinado con otro valor a la derecha, cada uno de los cuales debe ser un dict. Si una clave aparece en los dos grupos, el último valor visto gana. He aquí un ejemplo que ellos mismos ponen:

>>> d = {'spam': 1, 'eggs': 2, 'cheese': 3}

>>> e = {'cheese': 'cheddar', 'aardvark': 'Ethel'}

>>> d | e

{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}

>>> e | d

{'aardvark': 'Ethel', 'spam': 1, 'eggs': 2, 'cheese': 3}

El caso de ‘update’ es más sencillo:

>>> d |= e>>> d{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}
  • PEP 585

Este cambio elimina la necesidad de una jerarquía de tipos paralelos en el módulo de ‘typing’. Al hacerlo, a los desarrolladores les resulta más fácil anotar sus trabajos y más fácil enseñar Python. Esta propuesta evita la existencia de una jerarquía de colección duplicada en el módulo ‘typing’. Hay 38 colecciones que se han vuelto genéricas (usando __class_getitem __ ()).

Id bootcamps Banner
  • PEP 616

Agrega dos nuevos métodos a las API de varios objetos de cadena (string) de Python. Los métodos son removeprefix() y removesuffix() y eliminarán un prefijo o sufijo de una cadena que luego se agregaría a Unicode str object, binary bytes, bytearray o collections.UserString.

  • PEP 617

Incluye un nuevo analizador PEG más flexible y eficiente que el anterior que incluye:

  • Un generador de analizador capaz de leer un archivo de gramática y producir un analizador de PEG escrito en Python o C que puede analizar la gramática.
  • Una metagramática PEG que genera automáticamente un analizador de Python para el propio generador de analizadores.
  • Un analizador generado capaz de producir objetos AST en C y Python.

Nuevos módulos

Python 3.9.0rc2 también incluye dos nuevos módulos para expandir aún más el lenguaje de programación. Los nuevos módulos son:

  1. zoneinfo: este módulo agrega soporte para la base de datos de zona horaria de IANA a la biblioteca estándar. Esto incluye la adición de zoneinfo.ZoneInfo y una implementación concreta de datetime.tzinfo que está respaldada por los datos de la zona horaria del sistema.
  1. graphlib: Esto agrega la clase TopologicalSorter que incluye la capacidad de realizar una clasificación topológica de gráficos.

Módulos mejorados

La lista de módulos que se han mejorado incluye:

  • ast: se agregó la opción de identificación a dump()
  • asyncio: el parámetro reuse_address de asyncio.loop.create_datagram_endpoint() ya no es compatible.
  • compileall: se ha agregado la posibilidad de usar enlaces físicos (referencia a un archivo en un sistema de archivos) para archivos .pyc duplicados.
  • features: se agregó el nuevoparámetro cancel_futures a concurrent.futures.Executor.shutdown() que cancela todos los futuros pendientes en lugar de esperar a que se completen.
  • curses: se han añadido las funciones get_escdelay(), curses.set_escdelay(), curses.get_tabsize() y curses.set_tabsize().
  • datetime isocalendar() de datetime.data e isocalendar () de datetime.datetime ahora devuelven un namedtuple ().
  • http: los códigos de estado HTTP 103, 418 y 425 se han agregado a HTTPStatus.
  • random: se agregó un nuevo método Random.randbytes.
  • smtplibSMTP SMTP_SSL ahora genera un ValueError si el tiempo de espera dado para su constructor es cero.
  • sys: se agregó el nuevo atributo sys.platlibdir
  • tracemalloc: se agregó reset_peak() para establecer el tamaño máximo de los bloques de memoria rastreados para medir el pico de bloques de código específicos
  • xml:  los caracteres de espacio en blanco dentro de los atributos ahora se conservan al serializar etree.ElementTree en un archivo XML.

Optimizaciones

Python 3.9.0rc 2 ha introducido algunas optimizaciones:

  • Optimización del idioma para la asignación de variables temporales en comprensiones de listas.
  • Manejo de señales optimizado para aplicaciones multiproceso.
  • Optimización de los módulos de subproceso en FreeBSD (sistema operativo de código abierto).

Estas son las novedades más importantes de la última versión de Python. Si estás interesado en conocer más detalles, puedes encontrar la lista completa en el siguiente enlace.

Artículos Relacionados

Suscríbete a nuestra newsletter


(Obligatorio)

También te puede gustar

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Suscríbete a nuestra newsletter

2242