DESARROLLADOR

Lanzamiento de Python 3.9.0rc2: las funciones nuevas más emocionantes

La última versión candidata para Python ya está disponible. Jack Wallen destaca las mejores características de esta iteración de lenguajes de programación.


Imagen: James Sanders/Tecnopedia

Python suele figurar como uno de los lenguajes de programación más populares del planeta. No sorprende que se use tan ampliamente, pero con la desaprobación de Python 2, el mundo de Python pronto cambiará drásticamente. Este es un desafío porque la cantidad de código depende de esta iteración particular de Python.

Los desarrolladores han recibido una advertencia justa. De hecho, los desarrolladores de Python incluso crearon un reloj de cuenta regresiva al final de su vida útil de Python 2.7 que ahora dice «0 meses, 0 días, 0 horas, 0 minutos y 0 segundos».

En otras palabras, la era de Python 2 ha terminado: no se mantendrá después de 2023. Esto significa que todos los desarrolladores que usan Python deben migrar a Python 3. Por supuesto, esto debería ser un cliché para la mayoría de los desarrolladores de Python. El lanzamiento de Python 3.9.0rc2 puede no ser una noticia vieja.

Mirar: Manual de Python: información de actualización, nuevas funciones, consejos de instalación y uso, y más (PDF gratuito) (República tecnológica)

tan largo windows 7

La versión 3.9.0rc2 es la primera versión de Python que utiliza el instalador de 64 bits de forma predeterminada en las plataformas de Windows. Un efecto secundario importante es que esta versión candidata ya no se instalará en versiones no compatibles de Windows. En otras palabras, a menos que esté usando Windows 10, no usará Python 3.9.0rc2.

Además de dejar de ser compatible con Python 3.9 para cualquier versión de Windows anterior a la 10, ¿cuáles son las nuevas características interesantes del lenguaje? Primero echemos un vistazo a algo de lo que se incluye en la lista de propuestas de mejora de Python (PEP) para 3.9.0rc2.

LEER  Por qué el éxito del código abierto depende cada vez más del efectivo corporativo

Políticos 584

Esta nueva propuesta agrega operadores de unión, | (combinar) y |= (actualizar) a la clase dict integrada. Esto se hace porque el método actual de fusionar dos dictados tiene muchos inconvenientes. P.ej:

  • dict.update no es una expresión, requiere una variable temporal

  • {**d1, **d2} no son fáciles de detectar

  • collections.ChainMap resuelve claves duplicadas en el orden inverso esperado

  • dict(d1, **d2) solo funciona si d2 tiene una clave de cadena completa

Para usar uniones de diccionario, el nuevo diccionario debe constar de un operando izquierdo fusionado con el operando derecho, cada operando debe ser un diccionario. Si se encuentra una clave en ambos operandos, gana el último valor visto.

Mirar: Kit de herramientas de contratación: desarrollador de Python (República Tecnológica Premium)

Políticos 585

Este cambio elimina la necesidad de jerarquías de tipo paralelas en el módulo de tipos. Al hacer esto, es más fácil para los desarrolladores anotar su trabajo y enseñar Python. PEP 585 evita jerarquías de colección duplicadas en módulos tipo. Hay 38 colecciones que se han vuelto genéricas (usando __class_getitem__()). La lista incluye:

Usando anotaciones de tipo, ahora puede usar tipos de colección integrados como tipos genéricos.

Políticos 616

Esta propuesta agrega dos nuevos métodos a la API de Python para varios objetos de cadena. Estos métodos son removeprefix() y removesuffix(), que eliminarán el prefijo o el sufijo de una cadena y luego lo agregarán a:

  • Objeto de cadena Unicode

  • byte binario

  • matriz de bytes

  • colección.CadenaUsuario

Agregar estos dos métodos puede ayudar a escribir código:

  • menos frágil

  • más eficiente

  • más descriptivo

Pep 617

El lanzamiento de Python 3.9.0rc2 incluye un nuevo analizador PEG para CPython. Esto reemplaza al analizador actual basado en LL(1) y es más flexible que su predecesor. Si su código necesita usar el analizador antiguo, debe usar el modificador de línea de comando -X oldparser.

Para algunos antecedentes, Parsing Expression Grammar (PEG) difiere de la gramática libre de contexto en que está escrita de una manera que refleja más de cerca cómo opera un analizador cuando analiza una gramática.

Aunque la gramática de Python técnicamente se presenta bajo la apariencia de un analizador LL(1), hay muchas reglas que no siguen las pautas de LL(1), por lo que se deben usar soluciones alternativas en la gramática.

Los nuevos analizadores PEG incluyen:

  • Un generador de analizador que lee un archivo de gramática y produce un analizador PEG escrito en Python o C que puede analizar la gramática.

  • Genere automáticamente la metagramática de PEG para el analizador de Python para el generador de analizador en sí.

  • Un analizador generativo capaz de producir objetos C y Python AST.

nuevo modulo

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

  1. zoneinfo: este módulo agrega compatibilidad con la base de datos de zonas horarias de la IANA a la biblioteca estándar. Esto incluye agregar zoneinfo.ZoneInfo y una implementación concreta de datetime.tzinfo respaldada por datos de zona horaria del sistema.
  2. graphlib: Esto agrega la clase graphlib.TopologicalSorter, que incluye la capacidad de realizar la clasificación topológica de gráficos. El orden topológico es el orden lineal de los vértices en un gráfico tal que u ≼ v cuando u es un ancestro de v.

módulo mejorado

Muchos módulos de Python recibieron un cariño considerable en la versión rc2 de 3.9.0. La lista de módulos mejorados incluye:

  • Astor: Se agregó la opción de identificación para volcar ()

  • asincrónico: El parámetro reuse_address de asyncio.loop.create_datagram_endpoint() ya no es compatible

  • Compilar: Se agregó la capacidad de usar enlaces duros para archivos .pyc duplicados

  • Funciones de concurrencia: Se agregó un nuevo parámetro cancel_futures a concurrent.futures.Executor.shutdown() que cancela todos los futuros pendientes en lugar de esperar a que se completen

  • maldición: Se agregaron las funciones curses.get_escdelay(), curses.set_escdelay(), curses.get_tabsize() y curses.set_tabsize()

  • fecha y hora: isocalendar() para datetime.data e isocalendar() para datetime.datetime ahora devuelven una tupla con nombre().

  • URL: Se agregaron los códigos de estado HTTP 103, 418 y 425 a http.HTTPStatus

  • aleatorio: Se agregó un nuevo método random.Random.randbytes.

  • smtplib: SMTP y SMTP_SSL ahora generan ValueError si el tiempo de espera dado por su constructor es cero

  • sistema: Se agregó una nueva propiedad sys.platlibdir

  • Rastrear malloc: Se agregó tracemalloc.reset_peak() para establecer el tamaño máximo de los bloques de memoria de seguimiento para medir los picos de bloques de código específicos.

  • xml: Los caracteres de espacio en blanco en los atributos ahora se conservan al serializar xml.etree.ElementTree en un archivo XML

mejoramiento

En esta nueva versión se han realizado algunas optimizaciones importantes. Estas optimizaciones son:

  • El idioma de la asignación de variables temporales en la comprensión de la optimización

  • Manejo de señales optimizado para aplicaciones de subprocesos múltiples

  • Optimización del módulo de subprocesos en FreeBSD

La lista de nuevas funciones y mejoras en Python 3.9.0rc2 es muy importante. Asegúrese de consultar la lista completa para ver qué hay reservado para esta nueva versión.

LEER  En Android P, Google está solucionando el error que permitía que las aplicaciones rastrearan a los usuarios en secreto durante años

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba