La última versión final de Python 3.9.0 ha sido lanzada hoy lunes, 05-10-2020. 

Este artículo proporcionará una descripción general de las características imprescindibles de Python 3.9.

Basándome en la información relacionada a Python 3.9, quería escribir una guía completa para que todos puedan echar un vistazo a las funciones junto con su funcionamiento detallado.

Para Empezar

Desde la actualización/fusión del diccionario hasta la adición de nuevos métodos de cadena y la introducción de la biblioteca zoneinfo, se han agregado varias características nuevas. Además, se ha introducido un nuevo analizador estable y de alto rendimiento.

La biblioteca estándard se actualizo con numerosas características junto a la adición de nuevos módulos, zoneinfo y graphlib. También se han mejorado varios módulos como ast, asyncio, concurrent.futures, multiprocessing, xml, entre otros. 

1. Operadores de actualización y combinación de diccionarios

Se han agregado dos nuevos operadores relacionados a los diccionarios | y |=. El operador | es utilizado para combiar dos diccionarios, mientras el operador |= es utilizado para actualizar el diccionario.

PEP: 584

Para combinar |:

Para actulizar |=:

La regla clave a recordar es que si hay algún conflicto de claves, se mantendrá el valor más a la derecha. Significa que el último valor visto siempre gana. Este es también el comportamiento actual de otras operaciones para los dicts.

2. Nuevo analizador flexible de alto rendimiento PEG-Base

La versión de Python 3.9 tiene como propósito reemplazar el actual analizador de Python LL(1), por un nuevo analizador de código PEG-Base que es estable y de alto rendimiento.

PEP: 617

El analizador actual de CPython está basado en LL(1). Posteriormente, la gramática se basa en LL(1) para permitir que el analizador LL(1) la analice. El analizador LL(1) es un analizador de arriba hacia abajo. Además, analiza las entradas de izquierda a derecha. La gramática actual es gramática libre de contexto, por lo tanto, el contexto de los tokens no se tiene en cuenta.

La versión Python 3.9 propone reemplazarlo con un nuevo analizador PEG-Based, lo que significa que eliminará las restricciones gramaticales de Python LL(1) actuales. Además, el analizador actual ha sido parcheado con una serie de hacks que se eliminarán. Como resultado, reducirá el costo de mantenimiento a largo plazo.

Por ejemplo, aunque los analizadores sintácticos y las gramáticas LL(1) son simples de implementar, las restricciones no les permiten expresar construcciones comunes de forma natural para el diseñador del lenguaje y el lector. El analizador solo mira un token por delante para distinguir posibilidades.

3. Nuevas funciones en un String para eliminar prefijos y súfijos

Dos nuevas funciones han sido añadidas al objeto str:

  • La primera función remueve los préfijos: str.removeprefix(prefix).
  • La segunda función remueve los súfijos: str.removesuffix(suffix).

PEP: 616

Una de las tareas comunes en una aplicación de ciencia de datos que implica manipular texto es eliminar el prefijos/sufijos de las cadenas. Se han agregado dos funciones nuevas al objeto str. Estas funciones se pueden utilizar para eliminar prefijos y sufijos innecesarios de una cadena.

La primera función elimina el prefijo. Es str.removeprefix(prefijo). La segunda función elimina el sufijo. Es str.removesuffix(sufijo).

Recuerde que la cadena es una colección de caracteres y cada carácter tiene un índice en una cadena. Podemos usar los índices junto con los dos puntos: para devolver un subconjunto de la cadena. Esta característica se conoce como cortar un texto.

Si estudiamos las funciones, comprueban internamente si la cadena comienza con un prefijo (o termina con un sufijo) y si lo hace, devuelven una cadena sin prefijo (o después de un sufijo) usando la función de corte str[:].

Con estas funciones como parte de la biblioteca estándar, obtenemos una API que es consistente, menos frágil, de alto rendimiento y más descriptiva.

4. Sugerencia de tipos para tipos génericos

Los programas de anotaciones se han simplificado en esta versión al eliminar la jerarquía de tipos paralelos en Python.

La versión ha habilitado el soporte para la sintaxis genérica en todas las colecciones estándar disponibles actualmente en el módulo typing.

Podemos usar list o dict como tipos genéricos en lugar de usar typing.List o typing.Dict en la firma de nuestra función.

Por lo tanto, el código ahora parece más limpio y ha hecho que sea más fácil de entender/explicar el código.

Esto se puede revisar en PEP: 585.

5. Soporte para IANA timezone en DateTime.

El módulo zoneinfo se a añadido para soportar la base de datos de IANA, este soporte se ha añadido a la librería estándard.

PEP: 615

Las zonas horarias de IANA a menudo se denominan tz o zone info. Hay una gran cantidad de zonas horarias de IANA con diferentes rutas de búsqueda para especificar la zona horaria de IANA en un objeto de fecha y hora. Como ejemplo, podemos pasar el nombre de la ruta de búsqueda como Continente/Ciudad a un objeto de datetime para establecer su tzinfo.


Este artículo esta basado en 10 Awesone Python 3.9 features.

Python 3.9: Cinco nuevas funcionalidades increíbles en Python
Si te gusto, comparte ...Email this to someone
email
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Facebook