Sgaoileadh cànan prògramadh Python 3.11

Às deidh bliadhna de leasachadh, chaidh an sgaoileadh mòr de chànan prògramadh Python 3.11 fhoillseachadh. Thèid taic a thoirt don mheur ùr airson bliadhna gu leth, agus às deidh sin airson trì bliadhna gu leth eile, thèid fuasglaidhean a chruthachadh gus cuir às do so-leòntachd.

Aig an aon àm, thòisich deuchainn alpha air meur Python 3.12 (a rèir a ’chlàr leasachaidh ùr, bidh obair air meur ùr a’ tòiseachadh còig mìosan mus deach a ’mheur roimhe a leigeil ma sgaoil agus a’ ruighinn ìre deuchainn alpha ro àm an ath fhoillseachadh. ). Bidh meur Python 3.12 ann an alpha release airson seachd mìosan, nuair a thèid feartan ùra a chur ris agus bugaichean a shuidheachadh. Às deidh seo, thèid dreachan beta a dhearbhadh airson trì mìosan, nuair a thèid casg a chuir air feartan ùra a chuir ris agus thèid aire a thoirt do bhith a’ càradh bhiteagan. Airson an dà mhìos mu dheireadh mus tèid an leigeil ma sgaoil, bidh am meur aig ìre an tagraiche fuasglaidh, far an tèid an seasmhachd mu dheireadh a dhèanamh.

Am measg leasachaidhean ùra ri Python 3.11 tha:

  • Chaidh obair chudromach a dhèanamh gus coileanadh a bharrachadh. Tha am meur ùr a’ toirt a-steach atharrachaidhean co-cheangailte ri luathachadh agus cleachdadh in-loidhne de ghairmean gnìomh, cleachdadh eadar-mhìnearan luath de ghnìomhachd àbhaisteach (x + x, x * x, xx, a[i], a[i] = z, f(arg) C( arg), o.method(), o.attr = z, * seq), a bharrachd air optimizations air an ullachadh le pròiseactan Cinder agus HotPy. A rèir an t-seòrsa luchd, tha àrdachadh ann an astar cur an gnìomh còd 10-60%. Gu cuibheasach, chaidh coileanadh air an t-sreath deuchainn pyperformance suas 25%.

    Chaidh an uidheamachd caching bytecode ath-dhealbhadh, a lughdaich ùine tòiseachaidh an eadar-mhìneachaidh 10-15%. Tha nithean le còd agus bytecode a-nis air an riarachadh gu statach leis an eadar-theangair, a rinn e comasach cuir às do na h-ìrean de bhith a’ toirt a-mach bytecode a chaidh a thoirt a-mach às an tasgadan agus ag atharrachadh nithean le còd airson a chuir ann an cuimhne fiùghantach.

  • Nuair a sheallas tu comharran gairm ann am teachdaireachdan breithneachaidh, tha e comasach a-nis fiosrachadh a thaisbeanadh mun abairt a dh’ adhbhraich a ’mhearachd (roimhe seo, cha deach ach an loidhne a chomharrachadh gun a bhith ag innse dè am pàirt den loidhne a dh’ adhbhraich a ’mhearachd). Faodar fiosrachadh lorg leudaichte fhaighinn cuideachd tron ​​​​API agus a chleachdadh gus stiùireadh bytecode fa leth a mhapadh gu suidheachadh sònraichte sa chòd stòr a’ cleachdadh modh codeobject.co_positions () no an gnìomh C API PyCode_Addr2Location(). Tha an t-atharrachadh ga dhèanamh fada nas fhasa duilgheadasan a dheasbad le nithean faclair neadachaidh, gairmean ioma-ghnìomh, agus abairtean àireamhachd iom-fhillte. Traceback (gairm mu dheireadh mu dheireadh): Faidhle "calculation.py", loidhne 54, ann an toradh = (x / y / z) * (a / b / c) ~~~~~~~~ ZeroDivisionError: roinneadh le neoni
  • Taic a bharrachd do bhuidhnean eisgeachd, a’ toirt comas don phrògram grunn eisgeachdan eadar-dhealaichte a ghineadh agus a phròiseasadh aig an aon àm. Gus grunn eisgeachdan a chuir còmhla agus an togail còmhla, chaidh seòrsaichean eisgeachdan ùra ExceptionGroup agus BaseExceptionGroup a mholadh, agus chaidh an abairt “ach a-mhàin *” a chuir ris gus eisgeachdan fa-leth bho bhuidheann a shoilleireachadh.
  • Chaidh an dòigh add_note () a chur ris a’ chlas BaseException, a’ toirt cothrom dhut nota teacsa a cheangal ris an eisgeachd, mar eisimpleir, a’ cur fiosrachadh co-theacsail ris nach eil ri fhaighinn nuair a thèid an eisgeachd a thilgeil.
  • Chuir sinn seòrsa Fèin sònraichte ris gus an clas prìobhaideach gnàthach a riochdachadh. Faodar Fèin a chleachdadh gus dòighean a chomharrachadh a thilleas eisimpleir den chlas aige ann an dòigh nas sìmplidh na bhith a’ cleachdadh TypeVar. clas MyLock: def __enter__(fèin) -> Fèin: self.lock() till fèin
  • Chaidh seòrsa sònraichte LiteralString a chuir ris nach urrainn a bhith a’ toirt a-steach ach litrichean sreang a tha co-chosmhail ris an t-seòrsa LiteralString (ie, sreangan lom agus LiteralString, ach nach eil neo-riaghailteach no sreangan còmhla). Faodar an seòrsa LiteralString a chleachdadh gus casg a chuir air gluasad argamaidean sreang gu gnìomhan, cuir an àite pàirtean de shreathan gu neo-riaghailteach a dh’ fhaodadh so-leòntachd adhbhrachadh, mar eisimpleir, nuair a bhios tu a’ gineadh sreangan airson ceistean SQL no òrdughan shligean. def run_query(sql: LiteralString) -> ... ... def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> gin: run_query ("SELECT *FROM oileanaich") # ceart gu leòr run_query (literal_string) # ceart gu leòr run_query ( "SELECT * FROM" + literal_string) # ok run_query(arbitrary_string) # Mearachd run_query( # Error f"SELECT *FROM students WHERE name = {arbitrary_string}")
  • Chaidh an seòrsa TypeVarTuple a chur ris, a’ ceadachadh cleachdadh generics caochlaideach, eu-coltach ri TypeVar, a tha a’ còmhdach chan e aon seòrsa, ach àireamh neo-riaghailteach de sheòrsan.
  • Anns an leabharlann àbhaisteach tha am modal tomllib le gnìomhan airson cruth TOML a pharsadh.
  • Tha e comasach eileamaidean fa leth de fhaclairean clò-sgrìobhte (TypedDict) a chomharrachadh le bileagan Riatanach agus Neo-riatanach gus raointean riatanach agus roghainneil a dhearbhadh (gu gnàthach, tha feum air a h-uile raon dearbhte mura h-eil am paramadair iomlan air a shuidheachadh gu meallta). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = { "title": "Black Panther", "year": 2018} # OK m2: Movie = { "title": "Star Wars" } # Ceart gu leòr (tha raon na bliadhna roghainneil) m3: Movie = {“bliadhna”: 2022} # Mearachd, chan eil an raon tiotal riatanach air a lìonadh a-steach)
  • Chaidh an clas TaskGroup a chuir ris a’ mhodal asyncio le buileachadh manaidsear co-theacsa asyncronach a dh’ fheitheamh ri buidheann de ghnìomhan a choileanadh. Thèid gnìomhan a chur ri buidheann a dhèanamh a’ cleachdadh an dòigh create_task(). async def main(): async le asyncio.TaskGroup() mar tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("Tha an dà ghnìomh air a chrìochnachadh a-nis .")
  • Sgeadaiche @dataclass_transform air a chur ris airson clasaichean, dòighean agus gnìomhan, nuair a thèid a shònrachadh, bidh an siostam sgrùdaidh seòrsa statach a’ làimhseachadh an nì mar gum biodh e a’ cleachdadh an @dataclasses.dataclass decorator. Anns an eisimpleir gu h-ìosal, thèid an clas CustomerModel, nuair a thathar a’ sgrùdadh seòrsaichean, a phròiseasadh san aon dòigh ri clas leis an @dataclasses.dataclass decorator, i.e. mar a tha modh __init__ a tha a’ gabhail ri caochladairean id agus ainmich. @dataclass_transform() clas ModelBase: ... clas CustomerModel(ModelBase): id: ainm int: str
  • Ann an abairtean cunbhalach, chaidh an comas a bhith a’ cleachdadh buidhnean atamach ((?>...)) agus tomhasan seilbhe (*+, ++, ?+, {m, n}+).
  • Chaidh roghainn loidhne-àithne “-P” a chur ris agus caochladair àrainneachd PYTHONSAFEPATH gus ceangal fèin-ghluasadach de shlighean faidhle a dh’ fhaodadh a bhith cunnartach gu sys.path a dhì-cheadachadh.
  • Chaidh an goireas py.exe airson àrd-ùrlar Windows a leasachadh gu mòr, a’ cur taic ris a’ cho-chòrdadh “-V:”. / " A bharrachd air "- . "
  • Tha mòran macros anns an C API air an tionndadh gu gnìomhan in-loidhne cunbhalach no statach.
  • Tha na modalan uu, cgi, pìoban, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, agus sunau air an ìsleachadh agus thèid an toirt air falbh sa Python 3.13 air a leigeil ma sgaoil. Gnìomhan PyUnicode_Encode * air an toirt air falbh.

Source: fosgailtenet.ru

Cuir beachd ann