Scaoileadh teanga cláir Python 3.10

Tar éis bliana d'fhorbairt, cuirtear scaoileadh suntasach na teanga cláir Python 3.10 i láthair. Tabharfar tacaíocht don bhrainse nua ar feadh bliana go leith, agus ina dhiaidh sin ar feadh trí bliana go leith eile, ginfear réitigh chun deireadh a chur le leochaileachtaí.

Ag an am céanna, thosaigh tástáil alfa ar bhrainse Python 3.11 (de réir an sceidil forbartha nua, tosaíonn obair ar bhrainse nua cúig mhí roimh scaoileadh an bhrainse roimhe sin agus sroicheann sé an chéim tástála alfa faoi am an chéad scaoileadh eile. ). Beidh brainse Python 3.11 i scaoileadh alfa ar feadh seacht mí, agus cuirfear gnéithe nua leis agus socrófar fabhtanna lena linn. Tar éis seo, déanfar na leaganacha béite a thástáil ar feadh trí mhí, agus cuirfear cosc ​​​​ar ghnéithe nua a chur leis agus tabharfar aird ar fad ar fhabhtanna a shocrú. Don dá mhí dheireanacha roimh an scaoileadh, beidh an brainse ag céim an iarrthóra scaoilte, ag a ndéanfar an cobhsú deiridh.

Áirítear ar bhreiseanna nua le Python 3.10:

  • Oibreoirí "meaitseála" agus "cás" curtha i bhfeidhm maidir le meaitseáil patrún, a fheabhsaíonn inléiteacht an chóid, a shimplíonn meaitseáil rudaí Python treallach, agus a mhéadaíonn iontaofacht an chóid trí sheiceáil chineál statach chun cinn. Tá an cur i bhfeidhm mórán cosúil leis an oibreoir "meaitseáil" a sholáthraítear i Scala, Rust, agus F#, a dhéanann comparáid idir toradh slonn sonraithe le liosta de na patrúin atá liostaithe i mbloic bunaithe ar an oibreoir "cás".

    def http_error(status): stádas meaitseála: cás 400: seol ar ais “Drochiarratas” cás 401|403|404: seol ar ais “Ní cheadaítear” cás 418: seol ar ais “Is teapot mé” cás _: seol ar ais “Rud éigin eile”

    Is féidir leat rudaí, tuples, liostaí, agus seichimh treallach a dhíphacáil chun athróga a cheangal bunaithe ar luachanna atá ann cheana féin. Tá sé ceadaithe teimpléid neadaithe a shainiú, coinníollacha breise “má” a úsáid sa teimpléad, maisc a úsáid (“[x, y, *rest]”), mapálacha eochair/luacha (mar shampla, {“bandaleithead”: b, “latency ” : l} chun luachanna "bandaleithead" agus "latency" a bhaint as foclóir), fotheimpléid a bhaint as (":=" oibreoir), úsáid tairisigh ainmnithe i dteimpléad. Sna ranganna, is féidir iompar meaitseála a shaincheapadh ag baint úsáide as an modh “__match__()”.

    ó dataclasses iompórtáil dataclass @ dataclass class Pointe: x: int y: int def whereis(point): pointe meaitseála: cás Pointe(0, 0): cló("Bunús") cás Pointe(0, y): print(f" Y={y}") cás Pointe(x, 0): cló(f"X={x}") cás Pointe(): print("Áit éigin eile") cás _: print("Ní pointe") a mheaitseálann pointe: cás Pointe(x, y) má tá x == y: cló(f"Y=X ag {x}") cás Pointe(x, y): cló(f"Ní ar an trasnánach") RED, GREEN, GORM = 0, 1, 2 dath meaitseála: cás RED: print(“Feicim dearg!”) tuiseal GREEN: print(“Tá féar glas”) cás GORM: print(“Táim ag mothú na gormacha :(“)

  • Is féidir anois lúibíní a úsáid sa ráiteas leis chun an sainmhíniú ar bhailiúchán bainisteoirí comhthéacs a roinnt thar línte iolracha. Tá sé ceadaithe freisin camóg a fhágáil tar éis an bhainisteora comhthéacs deiridh sa ghrúpa: le ( CtxManager1() mar shampla1, CtxManager2() mar shampla2, CtxManager3() mar shampla3, : ...
  • Tuairisciú feabhsaithe ar shuíomh cóid na n-earráidí a bhaineann le braces neamhiata agus comharthaí athfhriotail i línte teaghráin. Mar shampla, nuair a bhíonn brace neamhdhúnta ann, in ionad earráid chomhréire a thuairisciú sa tógáil seo a leanas, léiríonn an pointeoir anois an brace oscailte agus léiríonn sé nach bhfuil aon bhloc dúnta ann. Comhad "example.py", líne 1 ag súil = {9:1, 18:2, 19:2, 27:3, 28:3, 29:3, 36:4, 37:4, ^Earráid Chomhréire: '{' níor dúnadh riamh

    Cuireadh teachtaireachtaí earráide comhréire speisialaithe breise leis: ar iarraidh " : " siombail roimh bhloc agus i bhfoclóirí, gan tuple a scaradh le lúibíní, camóg in easnamh i liostaí, ag sonrú bloc "triail" gan "seachas" agus "ar deireadh", ag baint úsáide as " = " in ionad " = = " i gcomparáidí, sonrófar *-léirithe i f-teaghráin. Ina theannta sin, áirithíonn sé go aibhsítear an slonn fadhbach iomlán, ní hamháin an tús, agus faisnéis níos soiléire faoi chomhthéacs na n-earráidí a bhaineann le eangú mícheart. >>> def foo(): ... if lel: ... x = 2 Comhad " " , líne 3 x = 2 ^ Earráid eangaithe: bhíomar ag súil le bloc eangaithe tar éis ráitis 'má' i líne 2

    I gcás earráidí de bharr typos in ainmneacha tréithe agus ainmneacha athraitheacha i bhfeidhm, déantar moladh leis an ainm ceart a aschur. >>>collections.namedtoplo Traceback (an glao deiridh is déanaí): Comhad « ”, líne 1, in AttributeError: níl aon aitreabúid 'namedtoplo' ag modúl 'collections'. An raibh i gceist agat: tuple ainmnithe?

  • Maidir le huirlisí dífhabhtaithe agus próifíleoirí, soláthraítear teagmhais rianaithe le huimhreacha beachta an chóid fhorghníomhaithe.
  • Cuireadh socrú sys.flags.warn_default_ionchódaithe leis chun rabhadh a thaispeáint faoi earráidí féideartha a bhaineann le TextIOWrapper agus chun comhaid ionchódaithe UTF-8 a oscailt() gan an rogha 'ionchódú =»utf-8″' a shonrú go sainráite (úsáidtear ionchódú ASCII de réir réamhshocraithe). Soláthraíonn an scaoileadh nua an cumas freisin luach 'ionchódú="locale"' a shonrú chun an t-ionchódú a shocrú bunaithe ar an locale reatha.
  • Tá oibreoir nua curtha leis an modúl clóscríofa, a sholáthraíonn uirlisí chun nótaí cineáil a shonrú, a cheadaíonn úsáid na comhréire “X | Y" chun ceann de na cineálacha a roghnú (cineál X nó cineál Y). def cearnach(uimhir: int | snámhphointe) -> int | snámhphointe: tá uimhir aischuir ** 2 comhionann leis an gceann ar tacaíodh leis roimhe seo: cearnóg def (uimhir: Union[int, snámhphointe]) -> Union[int, snámhphointe]: uimhir an aischuir ** 2
  • Tá an t-oibreoir Concatenate agus an athróg ParamSpec curtha leis an modúl clóscríofa, a ligeann duit faisnéis bhreise a chur ar aghaidh le haghaidh seiceáil cineál statach nuair a bhíonn Callable in úsáid. Cuireann an modúl clóscríobh freisin luachanna speisialta TypeGuard chun feidhmeanna cosanta cineál a anótáil agus TypeAlias ​​​​chun ailias cineál a shainiú go sainráite. StrCache: TypeAlias ​​= 'Taisce[str]' # ailias de chineál
  • Cuireann an fheidhm zip() bratach “dhian” roghnach i bhfeidhm, a seiceálann, nuair a shonraítear é, an bhfuil na hargóintí atá á n-aithris ar comhfhad. >>> liosta(zip(('a', 'b', 'c'), (1, 2, 3), dian=Fíor)) [('a', 1), ('b', 2) , ('c', 3)] >>> liosta(zip(raon(3), ['fee', 'fi', 'fo', 'fum'], strict=True)) Rianú ar ais (an glao deiridh ): … ValueError: zip() tá argóint 2 níos faide ná argóint 1
  • Moltar feidhmeanna ionsuite nua aiter() agus iarscríbhinn() le cur i bhfeidhm analógacha asincrónacha leis na feidhmeanna iter() agus an chéad cheann eile().
  • Tá luasghéarú 30-40% ar obair na dtógálaithe str(), bytes() agus bytearray() agus iad ag obair le réada beaga.
  • Laghdú ar líon na n-oibríochtaí allmhairithe sa mhodúl runpy. Ritheann an t-ordú "python3 -m module_name" anois ar an meán 1.4 huaire níos tapúla mar gheall ar laghdú na modúil allmhairithe ó 69 go 51.
  • Úsáideann an treoir LOAD_ATTR meicníocht taisce le haghaidh opcodes aonair, rud a d'fhág gur féidir luas a chur le hobair le tréithe rialta suas le 36%, agus le sliotáin suas le 44%.
  • Agus Python á dtógáil leis an rogha “--enable-optimizations”, tá an modh “-fno-séimeantach-idirshuíomh” cumasaithe anois, rud a cheadaíonn an t-ateangaire a bhrostú suas le 30% i gcomparáid le tógáil leis an “--enable-shared”. ” rogha.
  • Chuir na modúil hashlib agus ssl tacaíocht breise le haghaidh OpenSSL 3.0.0 agus stop siad ag tacú le leaganacha OpenSSL níos sine ná 1.1.1.
  • Baineadh an seanpharsálaí, agus cuireadh an parsálaí PEG (Gramadach Slonn Parsála) ina ionad sa bhrainse roimhe sin. Tá an modúl formáideora bainte. Baineadh an paraiméadar lúb den API asyncio. Baineadh modhanna a bhí imithe i léig roimhe seo. Baineadh na feidhmeanna Py_UNICODE_str* a ionramhálann teaghráin Py_UNICODE*.
  • Tá an modúl distutils imithe i léig agus tá sé sceidealta lena bhaint i Python 3.12. In ionad distutils, moltar na modúil setuptools, pacáistiú, ardán, shutil, subprocess agus sysconfig a úsáid. Tá an struchtúr wstr in PyUnicodeObject imithe i léig agus sceidealta lena bhaint.

Foinse: oscailtenet.ru

Add a comment