È stato rilasciato un nuovo aggiornamento stabile del popolare linguaggio di programmazione Python.
Python è un linguaggio di programmazione di alto livello, adatto a scopi generali, concepito per migliorare la produttività degli sviluppatori e la leggibilità del codice. Le caratteristiche principali includono tipizzazione dinamica, gestione automatica della memoria, introspezione completa, gestione delle eccezioni e supporto per il calcolo multithreading, oltre a strutture dati di alto livello.
Python è un linguaggio stabile e diffuso, utilizzato in molti progetti e in diverse capacità: come linguaggio di programmazione principale o per la creazione di estensioni e integrazione di applicazioni. Le principali aree di applicazione includono lo sviluppo web, l'apprendimento automatico e l'analisi dei dati, nonché automazione e amministrazione di sistema. Attualmente, Python occupa il terzo posto nella classifica TIOBE.
Principali modifiche:
Un nuovo parser ad alte prestazioni basato su grammatiche PEG.
Nella nuova versione, l'attuale parser Python basato su grammatiche LL(1) (grammatica CFG) è stato sostituito da un nuovo analizzatore sintattico ad alte prestazioni e stabile basato su PEG (grammatica PRG). Gli analizzatori per linguaggi rappresentati da grammatiche CFG, come gli analizzatori LR, richiedono un passaggio lessicale speciale che scompone i dati in ingresso in base a spazi, punteggiatura e così via. Questo è necessario poiché questi analizzatori utilizzano un'analisi preliminare per elaborare alcune grammatiche CFG in tempo lineare. Le grammatiche PRG non richiedono un passaggio lessicale separato e le regole per esse possono essere incorporate con altre regole grammaticali.
Nuovi operatori e funzioni
Due nuovi operatori, | per la fusione dei dizionari e |= per l'aggiornamento, sono stati aggiunti alla classe integrata dict.
Due nuove funzioni sono state aggiunte alla classe str: str.removeprefix(prefisso) e str.removesuffix(suffisso).
Suggerimento di tipo per tipi di collezione integrati
Questa versione include il supporto per la sintassi dei generatori in tutte le collezioni standard attualmente disponibili.
def read_blog_tags(tags: list[str]) -> None:
for tag in tags:
print("Nome Tag", tag)
Altre modifiche
PEP 573 Accesso allo stato del modulo tramite metodi di estensione C
PEP 593 Funzioni e annotazioni variabili flessibili
PEP 602 Python introduce rilasci stabili annuali
PEP 614 Allentamento delle restrizioni grammaticali sui decoratori
PEP 615 Supporto per il database IANA sui fusi orari nella libreria standard
BPO 38379 la raccolta dei rifiuti non è bloccata sugli oggetti ripristinati
BPO 38692 os.pidfd_open, per la gestione dei processi senza condizioni di competizione e segnali;
BPO 39926 supporto per Unicode aggiornato alla versione 13.0.0
BPO 1635741, durante l'inizializzazione multipla di Python nello stesso processo, non si verifica più perdita di memoria
Le collezioni Python (range, tuple, set, frozenset, list, dict) sono ottimizzate con la chiamata vettoriale PEP 590
Alcuni moduli Python (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) ora usano l'inizializzazione multi-fase, come definito in PEP 489
Una serie di moduli standard della libreria (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) ora utilizza un ABI stabile definito dal PEP 384.
Fonte: linux.org.ru
