Se ha lanzado una nueva versión estable del popular lenguaje de programación Python.
Python es un lenguaje de programación de alto nivel, de propósito general, orientado a aumentar la productividad del desarrollador y la legibilidad del código. Sus características principales incluyen tipado dinámico, gestión automática de memoria, introspección completa, manejo de excepciones, soporte para cálculos multihilo y estructuras de datos de alto nivel.
Python es un lenguaje estable y ampliamente utilizado. Se emplea en numerosos proyectos y diversas capacidades: como lenguaje principal de programación o para crear extensiones e integración de aplicaciones. Sus principales áreas de aplicación son el desarrollo web, el aprendizaje automático y análisis de datos, así como la automatización y administración de sistemas. En este momento, Python ocupa el tercer lugar en el ranking de TIOBE.
Principales cambios:
Un nuevo analizador sintáctico de alto rendimiento basado en gramáticas PEG.
En la nueva versión, el actual analizador de Python basado en gramáticas LL(1) (gramática libre de contexto) ha sido reemplazado por un nuevo analizador sintáctico de alto rendimiento y estable basado en PEG (gramática de expresión lineal). Los analizadores para lenguajes representados por gramáticas libres de contexto, como los analizadores LR, requieren un paso especial de análisis léxico que divide la entrada en función de espacios, puntuación, etc. Esto es necesario, ya que estos analizadores utilizan un análisis anticipado para procesar algunas gramáticas libres de contexto en tiempo lineal. Las gramáticas de expresión lineal no requieren un paso separado de análisis léxico, y las reglas para ello pueden integrarse junto con otras reglas gramaticales.
Nuevos operadores y funciones
Se han añadido dos nuevos operadores a la clase dict: | para fusionar diccionarios y |= para actualizar.
Se han añadido dos nuevas funciones a la clase str: str.removeprefix(prefijo) y str.removesuffix(sufijo).
Sugerencia de tipo para tipos de colección incorporados
Esta versión incluye soporte para la sintaxis de generadores en todas las colecciones estándar disponibles actualmente.
def read_blog_tags(tags: list[str]) -> None:
for tag in tags:
print("Nombre de la etiqueta", tag)
Otras modificaciones
PEP 573 Acceso al estado del módulo mediante métodos de extensión C
PEP 593 Funciones flexibles y anotaciones de variables
PEP 602 Python pasa a lanzamientos estables anuales
PEP 614 Suavización de las restricciones gramaticales en decoradores
PEP 615 Soporte de la base de datos IANA sobre zonas horarias en la biblioteca estándar
BPO 38379 La recolección de basura no se bloquea en los objetos restaurados
BPO 38692 os.pidfd_open, para la gestión de procesos sin carreras y señales;
BPO 39926 El soporte de Unicode se ha actualizado a la versión 13.0.0
BPO 1635741, al inicializar Python múltiples veces en el mismo proceso, ya no hay fuga de memoria
Las colecciones de Python (range, tuple, set, frozenset, list, dict) se han acelerado con la llamada vectorizada PEP 590
Algunos módulos de Python (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) ahora utilizan inicialización multifásica, como se define en PEP 489
Varios módulos estándar de bibliotecas (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) ahora utilizan un ABI estable definido por PEP 384.
Fuente: linux.org.ru
