Er is een nieuwe stabiele release van de populaire programmeertaal Python uitgebracht.
Python is een hoog-niveau programmeertaal voor algemene doeleinden, gericht op het verbeteren van de productiviteit van ontwikkelaars en de leesbaarheid van code. Belangrijkste kenmerken zijn dynamische typebinding, automatische geheugenbeheer, volledige introspectie, een mechanisme voor uitzonderingafhandeling, ondersteuning voor multi-threaded berekeningen en hoog-niveau datastructuren.
Python is een stabiele en veelgebruikte taal. Het wordt in veel projecten en op verschillende manieren gebruikt: als primaire programmeertaal of voor het creëren van extensies en integratie van applicaties. Belangrijke toepassingsgebieden zijn webontwikkeling, machine learning en data-analyse, automatisering en systeembeheer. Momenteel staat Python op de derde plaats in de ranking. TIOBE.
Belangrijkste wijzigingen:
Een nieuwe high-performance parser op basis van PEG-grammatica's.
In de nieuwe versie is de huidige Python-parser, gebaseerd op LL(1) (CFG), vervangen door een nieuwe, high-performance en stabiele parser op basis van PEG (GLR). Parsers voor talen die worden voorgesteld door CFG's, zoals LR-parsers, vereisen een speciale lexicale analystep die de invoer opsplitst op basis van spaties, interpunctie, enzovoort. Dit is nodig, omdat deze parsers voorafgaande analyse gebruiken om sommige CFG's in lineaire tijd te verwerken. PEG's vereisen geen aparte lexicale analystep; de regels daarvoor kunnen samen met andere grammaticaregels worden opgenomen.
Nieuwe operatoren en functies
Er zijn twee nieuwe operatoren toegevoegd aan de ingebouwde dict-klasse: | voor het samenvoegen van woordenboeken en |= voor bijwerken.
Er zijn twee nieuwe functies toegevoegd aan de str-klasse: str.removeprefix(prefix) en str.removesuffix(suffix).
Type hint voor ingebouwde collectietypen
Deze release bevat ondersteuning voor generator syntaxis in alle standaard collecties die momenteel beschikbaar zijn.
def read_blog_tags(tags: list[str]) -> None:
for tag in tags:
print("Tag naam", tag)
Andere veranderingen
PEP 573 Toegang tot de toestand van een module via C-extensiemethoden
PEP 593 Flexibele functies en variabele annotaties
PEP 602 Python schakelt over op jaarlijkse stabiele releases
PEP 614 Verminderde grammaticabeperkingen voor decorateurs
PEP 615 Ondersteuning van de IANA-database voor tijdzones in de standaardbibliotheek
BPO 38379 het ophalen van geheugen wordt niet geblokkeerd voor herstelde objecten
BPO 38692 os.pidfd_open, voor procesbeheer zonder races en signalen;
BPO 39926 Unicode-ondersteuning is bijgewerkt naar versie 13.0.0
BPO 1635741, bij meervoudige initialisatie van Python in hetzelfde proces, is er geen geheugenlek meer
Python-collecties (range, tuple, set, frozenset, list, dict) zijn versneld met behulp van vectoraanroep PEP 590
Sommige Python-modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) gebruiken nu meerfasige initialisatie, zoals gedefinieerd in PEP 489
Een aantal standaardbibliotheekmodules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) gebruiken nu een stabiele ABI, zoals gedefinieerd in PEP 384.
Bron: linux.org.ru
