Útgáfa af Python 3.11 forritunarmálinu

Eftir árs þróun hefur mikilvæg útgáfa Python 3.11 forritunarmálsins verið gefin út. Nýja útibúið verður stutt í eitt og hálft ár, eftir það í þrjú og hálft ár í viðbót verða lagfæringar fyrir það til að útrýma veikleikum.

Á sama tíma hófust alfaprófanir á Python 3.12 útibúinu (í samræmi við nýja þróunaráætlun hefst vinna við nýja útibú fimm mánuðum fyrir útgáfu fyrri útibús og nær alfaprófunarstigi við næstu útgáfu ). Python 3.12 útibúið verður í alfa útgáfu í sjö mánuði, þar sem nýjum eiginleikum verður bætt við og villur lagaðar. Eftir þetta verða beta útgáfur prófaðar í þrjá mánuði, á þeim tíma verður bannað að bæta við nýjum eiginleikum og allri athygli verður beint að því að laga villur. Síðustu tvo mánuði fyrir útgáfu mun útibúið vera á útgáfustigi, þar sem endanleg stöðugleiki fer fram.

Nýjar viðbætur við Python 3.11 innihalda:

  • Mikil vinna hefur verið lögð í að hámarka frammistöðu. Nýja greinin felur í sér breytingar sem tengjast hröðun og innbyggðri dreifingu virknikalla, notkun hraðvirkra túlka staðlaðra aðgerða (x+x, x*x, xx, a[i], a[i] = z, f(arg) C( arg), o.method(), o.attr = z, *seq), auk hagræðingar sem unnin eru af Cinder og HotPy verkefnunum. Það fer eftir tegund álags, það er aukning á keyrsluhraða kóða um 10-60%. Að meðaltali jókst árangur á pyperformance prófunarsvítunni um 25%.

    Bútakóða skyndiminni hefur verið endurhannað, sem hefur dregið úr ræsingartíma túlksins um 10-15%. Hlutum með kóða og bætikóða er nú úthlutað á kyrrstöðu af túlknum, sem gerði það mögulegt að útrýma stigunum við að afmarka bækikóða sem dreginn er út úr skyndiminni og umbreyta hlutum með kóða til að setja í kraftmikið minni.

  • Þegar símtalaspor eru sýnd í greiningarskilaboðum er nú hægt að birta upplýsingar um tjáninguna sem olli villunni (áður var aðeins línan auðkennd án þess að tilgreina hvaða hluti línunnar olli villunni). Einnig er hægt að fá auknar rakningarupplýsingar í gegnum API og notaðar til að kortleggja einstakar bækikóðaleiðbeiningar á tiltekna staðsetningu í frumkóðanum með því að nota codeobject.co_positions() aðferðina eða C API aðgerðina PyCode_Addr2Location(). Breytingin gerir það mun auðveldara að kemba vandamál með hreiðri orðabókarhlutum, mörgum fallköllum og flóknum reikningstjáningum. Rekning (síðasta símtal síðast): Skrá "calculation.py", lína 54, í niðurstöðu = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: deilt með núll
  • Bætti við stuðningi við undantekningarhópa, sem gefur forritinu möguleika á að búa til og vinna úr nokkrum mismunandi undantekningum í einu. Til að flokka margar undantekningar og hækka þær saman, hefur verið lagt til nýjar undantekningartegundir ExceptionGroup og BaseExceptionGroup og „except*“ tjáningunni hefur verið bætt við til að auðkenna einstakar undantekningar úr hópi.
  • Add_note() aðferðin hefur verið bætt við BaseException flokkinn, sem gerir þér kleift að hengja textaskýringu við undantekninguna, til dæmis að bæta við samhengisupplýsingum sem eru ekki tiltækar þegar undantekningunni er kastað.
  • Bætti við sérstakri sjálfstegund til að tákna núverandi einkaflokk. Sjálf er hægt að nota til að skrifa athugasemdir við aðferðir sem skila tilviki af bekknum sínum á einfaldari hátt en að nota TypeVar. class MyLock: def __enter__(self) -> Self: self.lock() skilar sjálfum sér
  • Bætt við sérstakri LiteralString gerð sem getur aðeins innihaldið strengjabókstafi sem eru samhæfðir LiteralString gerðinni (þ. Hægt er að nota LiteralString tegundina til að takmarka sendingu strengjaviðmiða við föll, handahófskennda skiptingu á hluta strengja sem getur leitt til veikleika, til dæmis þegar búið er til strengi fyrir SQL fyrirspurnir eða skel skipanir. def run_query(sql: LiteralString) -> ... ... def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> None: run_query("SELECT * FROM students") # ok run_query(literal_string) # ok run_query( "SELECT * FROM" + literal_string) # ok run_query(arbitrary_string) # Error run_query( # Villa f"SELECT * FROM students WHERE name = {arbitrary_string}" )
  • TypeVarTuple gerðinni hefur verið bætt við, sem gerir kleift að nota breytilega almenna tegund, ólíkt TypeVar, sem nær ekki yfir eina tegund, heldur handahófskenndan fjölda tegunda.
  • Staðlaða bókasafnið inniheldur tomllib eininguna með aðgerðum til að flokka TOML sniðið.
  • Það er hægt að merkja einstaka þætti vélritaðra orðabóka (TypedDict) með Required og NotRequired merkingum til að ákvarða nauðsynlega og valfrjálsa reiti (sjálfgefið eru allir uppgefnir reitir nauðsynlegir ef heildarfæribreytan er ekki stillt á False). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # OK (ársreiturinn er valfrjáls) m3: Movie = {“year”: 2022} # Villa, áskilinn titilreitur er ekki fylltur út)
  • TaskGroup bekknum hefur verið bætt við asyncio eininguna með innleiðingu á ósamstilltum samhengisstjóra sem bíður eftir að hópur verkefna ljúki. Að bæta verkefnum við hóp er gert með því að nota create_task() aðferðina. async def main(): ósamstilltur með asyncio.TaskGroup() sem tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(annar_coro(...)) print("Bæði verkunum er lokið núna .")
  • Bætt við @dataclass_transform skreytara fyrir flokka, aðferðir og aðgerðir, þegar tilgreint er, meðhöndlar kyrrstæða tegundaeftirlitskerfið hlutinn eins og hann noti @dataclasses.dataclass skreytinguna. Í dæminu hér að neðan verður CustomerModel flokkurinn, þegar gerðir eru skoðaðar, unnar á svipaðan hátt og flokkur með @dataclasses.dataclass skreytinguna, þ.e. sem að hafa __init__ aðferð sem samþykkir auðkenni og nafnbreytur. @dataclass_transform() class ModelBase: ... class CustomerModel(ModelBase): id: int nafn: str
  • Í reglulegum orðatiltækjum hefur verið bætt við hæfileikanum til að nota atómflokkun ((?>...)) og eignargildi (*+, ++, ?+, {m,n}+).
  • Bætt við "-P" skipanalínuvalkosti og PYTHONSAFEPATH umhverfisbreytu til að slökkva á sjálfvirkri viðhengi á hugsanlega óöruggum skráarslóðum við sys.path.
  • py.exe tólið fyrir Windows pallinn hefur verið endurbætt verulega og bætti við stuðningi við „-V:“ setningafræðina. / " til viðbótar við "- . "
  • Mörgum fjölvi í C API er breytt í venjulegar eða kyrrstæðar innbyggðar aðgerðir.
  • Uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev og sunau einingarnar hafa verið úreltar og verða fjarlægðar í Python 3.13 útgáfu. Fjarlægði PyUnicode_Encode* aðgerðir.

Heimild: opennet.ru

Bæta við athugasemd