Python 3.11 komt met prestatieverbeteringen, herontwerp van caching en meer

Python

Python is een op hoog niveau geïnterpreteerde programmeertaal waarvan de filosofie de leesbaarheid van de code benadrukt.

Na een jaar van ontwikkeling de nieuwe versie van de programmeertaal Python 3.11 is gepubliceerd, wordt de nieuwe vestiging anderhalf jaar ondersteund, waarna er nog drie en een half jaar patches met kwetsbaarheden worden gevormd.

Tegelijkertijd begon het alfa-testen van de Python 3.12-tak (volgens het nieuwe ontwikkelingsschema begint het werk aan een nieuwe vertakking vijf maanden vóór de release van de vorige vertakking en bereikt het alfatesten tegen de tijd van de volgende versie).

De Python 3.12-tak zal zeven maanden in alfa-releases zijn, waarin nieuwe functies worden toegevoegd en bugs worden opgelost. Daarna vinden gedurende drie maanden bètatests plaats, waarin het toevoegen van nieuwe functies verboden is en volledige aandacht zal worden besteed aan bugfixes. De laatste twee maanden voor de lancering bevindt het filiaal zich in het stadium van de lanceringskandidaat, waarna de definitieve stabilisatie zal plaatsvinden.

Belangrijkste nieuwe functies van Python 3.11

In deze nieuwe versie Er is veel werk verzet om de prestaties te optimaliseren, aangezien de nieuwe tak gerelateerde wijzigingen bevat met versnelling en inline inzet van functieaanroepen, het gebruik van snelle interpreters van typische bewerkingen, evenals optimalisaties die zijn voorbereid door de Cinder- en HotPy-projecten. Afhankelijk van het type belasting neemt de snelheid van code-uitvoering toe tussen 10% en 60%. Gemiddeld stegen de prestaties bij het passeren van de pyperformance-testsuite met 25%.

Het caching-mechanisme is opnieuw ontworpen van bytecode, waardoor de opstarttijd van de tolk met 10-15% werd verminderd. Objecten met code en bytecode worden nu statisch toegewezen door de interpreter, wat het mogelijk maakte om de stappen van het ontrafelen van bytecode die uit de cache is opgehaald en het converteren van objecten met code om ze in heap-geheugen te plaatsen, te elimineren.

Toegevoegd ondersteuning voor uitzonderingsgroepen, wat het programma de mogelijkheid geeft om verschillende uitzonderingen tegelijkertijd op te heffen en te verwerken. Nieuwe uitzonderingstypen ExceptionGroup en BaseExceptionGroup worden voorgesteld om meerdere uitzonderingen samen te groeperen, en de uitdrukking "behalve* " wordt toegevoegd om uitzonderingen van een groep te scheiden.

Een speciaal LetterlijkString-type toegevoegd zo alleen kan letterlijke tekenreeksen bevatten die compatibel zijn met het type LiteralString (dat wil zeggen, kale strings en strings van het type LiteralString, maar geen willekeurige of gemengde strings van het type str). Het type LiteralString kan worden gebruikt om het doorgeven van tekenreeksargumenten aan functies te beperken, willekeurige vervanging van delen van tekenreeksen waar dit kan leiden tot kwetsbaarheden, bijvoorbeeld bij het genereren van tekenreeksen voor SQL-query's of shell-opdrachten.

Daarnaast ook de mogelijkheid om individuele elementen van woordenboeken te markeren wordt geboden (TypedDict) met Verplichte en Niet Verplichte vlaggen om verplichte en optionele velden te bepalen (standaard zijn alle gedeclareerde velden verplicht als de totale parameter niet is ingesteld op Nep).

Toegevoegd @dataclass_transform klasse, methode en functie decorateur, indien opgegeven, behandelt de statische typecontrole het object alsof de @dataclasses.dataclass-decorator wordt gebruikt.

Van de andere veranderingen die opvallen in deze nieuwe versie:

  • De mogelijkheid toegevoegd om atomaire groepering ((?>…)) en jaloerse (bezittelijke) kwantoren (*+, ++, ?+, {m,n}+) in reguliere expressies te gebruiken.
  • Het TypeVarTuple-type is toegevoegd, waardoor het gebruik van variabele generieke geneesmiddelen mogelijk is, in tegenstelling tot TypeVar, dat niet één type omvat, maar een willekeurig aantal typen.
  • De standaardbibliotheek bevat de tomllib-module met functies om het TOML-formaat te ontleden.
  • De methode add_note() is toegevoegd aan de klasse BaseException, waardoor een tekstnotitie aan de uitzondering kan worden toegevoegd, bijvoorbeeld om contextuele informatie toe te voegen die niet beschikbaar was op het moment dat de uitzondering werd gegenereerd.
  • Er is een speciaal type Self toegevoegd om de huidige privéklasse weer te geven. Self kan worden gebruikt om methoden te annoteren die een instantie van uw klasse op een eenvoudigere manier retourneren dan het gebruik van TypeVar.
  • "-P" opdrachtregeloptie en PYTHONSAFEPATH-omgevingsvariabele toegevoegd om automatische verbinding van potentieel onveilige bestandspaden naar sys.path uit te schakelen.
  • Het hulpprogramma py.exe voor het Windows-platform is aanzienlijk verbeterd om de syntaxis "-V:" te ondersteunen. / " in aanvulling op "- . ».
  • Veel C API-macro's zijn geconverteerd naar reguliere of statische inline-functies
  • De modules uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev en sunau zijn verouderd en zullen uit Python worden verwijderd. 3.13 vrijgeven.
  • PyUnicode_Encode*-functies verwijderd.
  • De klasse TaskGroup is toegevoegd aan de asyncio-module met de implementatie van een asynchrone contextmanager die wacht tot de taakgroep is voltooid.
  • Het toevoegen van taken aan een groep gebeurt met behulp van de create_task() methode.

Eindelijk als u er meer over wilt weten, kunt u de details inchecken de volgende link. 


Voeg dit toe als voorkeursbron in Google.