Python 3.11 kommer med ydeevneforbedringer, caching redesign og mere

Python

Python er et fortolket programmeringssprog på højt niveau, hvis filosofi understreger læsbarheden af ​​dets kode.

Efter et års udvikling er den nye version af programmeringssproget Python, 3.11 , blevet udgivet. Den nye gren vil blive understøttet i halvandet år, hvorefter der vil blive udgivet patches i yderligere tre et halvt år for at afhjælpe sårbarheder.

Samtidig begyndte alfatestning af Python 3.12-grenen (ifølge den nye udviklingsplan begynder arbejdet på en ny gren fem måneder før udgivelsen af ​​den forrige gren og når alfateststadiet på tidspunktet for den næste version).

Python 3.12-grenen vil være i alfa-udgivelser i syv måneder, hvor nye funktioner vil blive tilføjet og fejl rettet. Derefter vil beta-test finde sted i tre måneder, hvor tilføjelsen af ​​nye funktioner vil være forbudt, og der vil blive givet fuld opmærksomhed på fejlrettelser. De sidste to måneder før lanceringen vil filialen være i lanceringskandidatstadiet, hvor den endelige stabilisering vil finde sted.

De vigtigste nye funktioner i Python 3.11

Denne nye version inkluderer betydeligt arbejde for at optimere ydeevnen . Den nye gren inkorporerer ændringer relateret til acceleration og inline-implementering af funktionskald , brugen af ​​hurtige fortolkere til typiske operationer og optimeringer udviklet af Cinder- og HotPy-projekterne. Afhængigt af arbejdsbyrden øges kodeeksekveringshastigheden mellem 10 % og 60 %. I gennemsnit steg ydeevnen på pyperformance-testsuiten med 25 %.

Bytekode-cachingmekanismen er blevet redesignet , hvilket reducerer fortolkerens opstartstid med 10-15%. Objekter, der indeholder bytekode, allokeres nu statisk af fortolkeren, hvilket eliminerer trinnene med at afkode bytekode hentet fra cachen og konvertere objekter, der indeholder bytekode, til dynamisk placering i hukommelsen.

Der er tilføjet understøttelse af undtagelsesgrupper , hvilket giver programmet mulighed for at generere og behandle flere forskellige undtagelser samtidigt. Nye undtagelsestyper, ExceptionGroup og BaseExceptionGroup, foreslås til gruppering og kombination af flere undtagelser, og udtrykket "except*" er blevet tilføjet for at adskille undtagelser inden for en gruppe.

En særlig LiteralString-type er blevet tilføjet , som kun kan indeholde litterale strenge, der er kompatible med LiteralString-typen (dvs. bare strenge og strenge af typen LiteralString, men ikke vilkårlige eller kombinerede strenge af typen str). LiteralString-typen kan bruges til at begrænse overførslen af ​​strengargumenter til funktioner og forhindre vilkårlig substitution af dele af strenge, hvor der kan opstå sårbarheder, for eksempel ved generering af strenge til SQL-forespørgsler eller shell-kommandoer.

Derudover er det muligt at markere individuelle elementer i typebeskrevne ordbøger (TypedDict) med påkrævede og ikke-påkrævede markeringer for at bestemme obligatoriske og valgfrie felter (som standard er alle deklarerede felter obligatoriske, hvis total-parameteren ikke er indstillet til Falsk).

Klasse-, metode- og funktionsdekoratoren @dataclass_transform blev tilføjet ; når den er angivet, behandler den statiske typekontrol objektet, som om det brugte dekoratoren @dataclasses.dataclass.

Af de andre ændringer, der skiller sig ud i denne nye version:

  • Tilføjet muligheden for at bruge atomgruppering ((?>…)) og jaloux (besiddende) kvantificerere (*+, ++, ?+, {m,n}+) i regulære udtryk.
  • TypeVarTuple-typen er blevet tilføjet, som tillader brugen af ​​variable generiske stoffer, i modsætning til TypeVar, som ikke dækker én type, men et vilkårligt antal typer.
  • Standardbiblioteket inkluderer tomllib-modulet med funktioner til at parse TOML-formatet.
  • Metoden add_note() er blevet tilføjet til BaseException-klassen, som gør det muligt at vedhæfte en tekstnote til undtagelsen, for eksempel for at tilføje kontekstuel information, der ikke var tilgængelig på det tidspunkt, hvor undtagelsen blev kastet.
  • En speciel type Selv er blevet tilføjet til at repræsentere den aktuelle private klasse. Self kan bruges til at annotere metoder, der returnerer en forekomst af din klasse på en enklere måde end at bruge TypeVar.
  • Tilføjet "-P" kommandolinjemulighed og PYTHONSAFEPATH miljøvariabel for at deaktivere automatisk forbindelse af potentielt usikre filstier til sys.path.
  • py.exe-værktøjet til Windows-platformen er blevet væsentligt forbedret for at understøtte "-V:"-syntaksen. / " i tillæg til "- . ».
  • Mange C API-makroer er blevet konverteret til almindelige eller statiske inline-funktioner
  • Uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev og sunau-modulerne er blevet forældet og vil blive fjernet fra Python. 3.13 udgivelse.
  • Fjernede PyUnicode_Encode*-funktioner.
  • TaskGroup-klassen blev føjet til asyncio-modulet med implementeringen af ​​en asynkron konteksthåndtering, der venter på, at opgavegruppen er færdig.
  • Tilføjelse af opgaver til en gruppe udføres ved hjælp af create_task() metoden.

Endelig, hvis du er interesseret i at lære mere om dette , kan du finde detaljerne på følgende link.


Tilføj som foretrukken kilde i Google