Python 3.9.0

Er is een nieuwe stabiele release van de populaire programmeertaal Python uitgebracht.

Python is een hoogwaardige programmeertaal voor algemene doeleinden, gericht op het verbeteren van de productiviteit van ontwikkelaars en de leesbaarheid van code. De belangrijkste kenmerken zijn dynamisch typen, automatisch geheugenbeheer, volledige introspectie, mechanisme voor afhandeling van uitzonderingen, ondersteuning voor multi-threaded computing, datastructuren op hoog niveau.

Python is een stabiele en wijdverbreide taal. Het wordt in veel projecten en in verschillende capaciteiten gebruikt: als primaire programmeertaal of voor het maken van uitbreidingen en applicatie-integraties. Belangrijkste toepassingsgebieden: webontwikkeling, machine learning en data-analyse, automatisering en systeembeheer. Python staat momenteel op de derde plaats in de ranglijst TIOBE.

Grote veranderingen:

Nieuwe krachtige parser gebaseerd op PEG-grammatica's.

In de nieuwe versie is de huidige Python-parser gebaseerd op LL(1)-grammatica's (KS-grammatica) vervangen door een nieuwe krachtige en stabiele parser gebaseerd op PEG (PB-grammatica). Parsers voor talen die worden weergegeven door KS-grammatica's, zoals LR-parsers, vereisen een speciale lexicale analysestap die de invoer opsplitst op basis van witruimte, interpunctie, enzovoort. Dit is nodig omdat deze parsers voorbereiding gebruiken om sommige KS-grammatica's in lineaire tijd te verwerken. RV-grammatica's vereisen geen afzonderlijke lexicale analysestap, en de regels ervoor kunnen samen met andere grammaticaregels worden vastgelegd.

Nieuwe operators en functies

Er zijn twee nieuwe operators toegevoegd aan de ingebouwde dict-klasse, | voor het samenvoegen van woordenboeken en |= voor bijwerken.

Er zijn twee nieuwe functies toegevoegd aan de klasse str: str.removeprefix(prefix) en str.removesuffix(suffix).

Typehints voor ingebouwde verzamelingstypen

Deze release bevat ondersteuning voor generatorsyntaxis in alle standaardcollecties die momenteel beschikbaar zijn.

def read_blog_tags(tags: lijst[str]) -> Geen:
voor tags in tags:
print("Tagnaam", tag)

Andere wijzigingen

  • PEP 573 Toegang tot modulestatus met behulp van C-extensiemethoden

  • PEP 593 Flexibele functies en variabele annotaties

  • PEP 602 Python gaat over naar jaarlijkse stabiele releases

  • PEP 614 Ontspannende grammaticale beperkingen voor decorateurs

  • PEP 615 IANA Tijdzonedatabaseondersteuning in de standaardbibliotheek

  • BPO 38379 Afvalinzameling blokkeert niet op teruggevonden objecten

  • BPO 38692 os.pidfd_open, voor controle van processen zonder races en signalen;

  • BPO 39926 Unicode-ondersteuning bijgewerkt naar versie 13.0.0

  • BPO 1635741, Python lekt niet meer wanneer Python meerdere keren in hetzelfde proces wordt geïnitialiseerd

  • Python-verzamelingen (bereik, tupel, set, frozenset, lijst, dict) versneld met PEP 590 vectoroproep

  • Sommige Python-modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) gebruiken nu polyfase-initialisatie zoals gedefinieerd in PEP 489

  • Een aantal standaard bibliotheekmodules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) gebruiken nu de stabiele ABI gedefinieerd door PEP 384.

Bron: linux.org.ru

Voeg een reactie