Ho lokolloa ha puo ea lenaneo la Python 3.11

Kamora selemo sa nts'etsopele, tokollo e kholo ea puo ea lenaneo la Python 3.11 e phatlalalitsoe. Lekala le lecha le tla tšehetsoa ka selemo le halofo, ka mor'a moo bakeng sa lilemo tse ling tse tharo le halofo, ho tla etsoa litokiso bakeng sa ho felisa bofokoli.

Ka nako e ts'oanang, tlhahlobo ea alpha ea lekala la Python 3.12 e qalile (ho ea ka kemiso e ncha ea ntlafatso, mosebetsi oa lekala le lecha o qala likhoeli tse hlano pele ho lokolloa ha lekala le fetileng mme o fihla sethaleng sa tlhahlobo ea alpha nakong ea tokollo e latelang. ). Lekala la Python 3.12 le tla ba ka har'a alpha ka likhoeli tse supileng, moo likarolo tse ncha li tla eketsoa le ho lokisoa liphoso. Ka mor'a sena, liphetolelo tsa beta li tla lekoa ka likhoeli tse tharo, nakong eo ho eketsa likarolo tse ncha ho tla thibeloa 'me tlhokomelo eohle e tla lefshoa ho lokisa liphoso. Likhoeling tse peli tsa ho qetela pele ho lokolloa, lekala le tla be le le boemong ba mokhethoa oa ho lokolloa, moo ho tla etsoa botsitso ba ho qetela.

Keketso e ncha ho Python 3.11 e kenyelletsa:

  • Mosebetsi o moholo o entsoe ho ntlafatsa ts'ebetso. Lekala le lecha le kenyelletsa liphetoho tse amanang le ho potlakisa le ho kenya tšebetsong mehala ea tšebetso, tšebeliso ea bafetoleli ba potlakileng ba ts'ebetso e tloaelehileng (x+x, x*x, xx, a[i], a[i] = z, f(arg) C( arg), o.method(), o.attr = z, *seq), hammoho le lintlafatso tse lokiselitsoeng ke merero ea Cinder le HotPy. Ho itšetlehile ka mofuta oa mojaro, ho na le keketseho ea lebelo la ho phethahatsa khoutu ea 10-60%. Ka karolelano, ts'ebetso ea tlhahlobo ea pyperformance e eketsehile ka 25%.

    Mochine oa caching oa bytecode o hlophisitsoe bocha, o fokotsitseng nako ea ho qala mofetoleli ka 10-15%. Lintho tse nang le khoutu le li-bytecode joale li arolelitsoe ka mokhoa o tsitsitseng ke mofetoleli, e leng se entseng hore ho khonehe ho felisa methati ea unmarshalling bytecode e nkiloeng ho cache le ho fetola lintho tse nang le khoutu e lokelang ho kenngoa mohopolong o matla.

  • Ha o bonts'a mehala ea mohala melaetsa ea tlhahlobo, joale hoa khoneha ho bonts'a tlhahisoleseling mabapi le polelo e bakileng phoso (pele ho ne ho totobalitsoe mola feela ntle le ho hlakisa hore na ke karolo efe ea mohala e bakileng phoso). Tlhahisoleseding e atolositsoeng ea trace e ka boela ea fumanoa ka API 'me ea sebelisoa ho etsa 'mapa oa litaelo tsa bytecode sebakeng se itseng mohloling oa mohloli o sebelisa mokhoa oa codeobject.co_positions() kapa ts'ebetso ea C API PyCode_Addr2Location(). Phetoho e etsa hore ho be bonolo haholo ho rarolla mathata ka lintho tse hlahang bukeng ea mantsoe, mehala e mengata ea tšebetso, le mantsoe a rarahaneng a lipalo. Traceback (mohala oa morao tjena): Faele "calculation.py", mola 54, sephetho = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: arola ka zero
  • Tšehetso e ekelitsoeng bakeng sa lihlopha tse ikhethileng, e fang lenaneo bokhoni ba ho hlahisa le ho sebetsana le mekhelo e mengata e fapaneng ka nako e le 'ngoe. Ho kopanya mekhelo e mengata le ho e phahamisa hammoho, ho hlahisitsoe mefuta e mecha ea mokhelo ExceptionGroup le BaseExceptionGroup, 'me poleloana ea "ntle*" e kentsoe ho totobatsa mekhelo ea sehlopha.
  • Mokhoa oa add_note () o kenyelelitsoe sehlopheng sa BaseException, se u lumellang ho hokela mongolo oa mongolo ho mokhelo, mohlala, ho eketsa tlhahisoleseling e sa fumaneheng ha mokhelo o lahleloa.
  • E kentse mofuta o ikhethileng oa Self ho emela sehlopha sa hajoale sa poraefete. Self e ka sebelisoa ho hlalosa mekhoa e khutlisetsang mohlala oa sehlopha sa eona ka tsela e bonolo ho feta ho sebelisa TypeVar. class MyLock: def __kenter__(self) -> Self: self.lock() ikhutse
  • E kentse mofuta o khethehileng oa LiteralString o ka kenyelletsang likhoele tsa likhoele tse tsamaellanang le mofuta oa LiteralString (ke hore, bare le LiteralString strings, empa eseng likhoele tse sa tsitsang kapa tse kopaneng). Mofuta oa LiteralString o ka sebelisoa ho fokotsa phetisetso ea likhoele ho ts'ebetso, phetisetso e sa reroang ea likarolo tsa likhoele moo ho ka lebisang bofokoling, mohlala, ha ho etsoa likhoele bakeng sa lipotso tsa SQL kapa litaelo tsa likhetla. def run_query(sql: LiteralString) -> ... ... def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> Ha ho letho: run_query("KHETHA * HO BAithuti") # ok run_query(literal_string) # ok run_query( "KHETHA * HO TSOA" + literal_string) # ok run_query(arbitrary_string) # Error run_query( # Phoso f" KHETHA * HO TSOA HO baithuti HOKAE lebitso = {arbitrary_string}")
  • Mofuta oa TypeVarTuple o ekelitsoe, o lumellang tšebeliso ea mefuta e fapaneng ea li-generic, ho fapana le TypeVar, e sa koaheleng mofuta o le mong, empa palo e ikemetseng ea mefuta.
  • Laeborari e tloaelehileng e kenyelletsa module ea tomllib e nang le mesebetsi ea ho hlophisa sebopeho sa TOML.
  • Hoa khoneha ho tšoaea likarolo tsa motho ka mong tsa didikishinari tse tlanngoeng (TypedDict) ka lileibole tse Hlokehang le tse sa Hlokehang ho fumana likarolo tse hlokahalang le tseo u ka li khethang (ka ho sa feleng, likarolo tsohle tse boletsoeng lia hlokahala haeba kakaretso ea parametha e sa behoa ho Bohata). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # OK (sebaka sa selemo ke sa boikhethelo) m3: Movie = {“selemo”: 2022} # Phoso, karolo e hlokahalang ea sehlooho ha ea tlatsoa)
  • Sehlopha sa TaskGroup se kenyellelitsoe mojuleng oa asyncio ka ts'ebetsong ea mookameli oa maemo a sa tšoaneng a emelang hore sehlopha sa mesebetsi se phethe. Ho eketsa mesebetsi sehlopheng ho etsoa ka mokhoa oa create_task(). async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("Mesebetsi ka bobeli e felile joale .")
  • E ekelitsoe @dataclass_transform mokhabiso bakeng sa lihlopha, mekhoa le mesebetsi, ha e hlalositsoe, mokhoa oa ho hlahloba mofuta o tsitsitseng o tšoara ntho joalokaha eka o sebelisa mokhabiso oa @dataclasses.dataclass. Mohlala o ka tlase, sehlopha sa CustomerModel, ha se hlahloba mefuta, se tla sebetsoa ka mokhoa o ts'oanang le sehlopha se nang le mokhabiso oa @dataclasses.dataclass, ke hore. joalo ka ho ba le __init__ mokhoa o amohelang id le mabitso a fapaneng. @dataclass_transform() class ModelBase: … class CustomerModel(ModelBase): id: int name: str.
  • Lipolelong tse tloaelehileng, ho kenyellelitsoe bokhoni ba ho sebelisa lihlopha tsa athomo ((?>...)) le li-quomic quantifiers (+, ++, ?+, {m,n}+).
  • Ho ekelitsoe "-P" khetho ea mola oa taelo le ho feto-fetoha ha tikoloho ea PYTHONSAFEPATH ho tima sehokelo sa othomathiki sa litsela tse sa bolokehang tsa lifaele ho sys.path.
  • Ts'ebeliso ea py.exe bakeng sa sethala sa Windows e ntlafalitsoe haholo, e eketsa ts'ehetso bakeng sa syntax ea "-V:". / " ho tlatselletsoa ho "- . "
  • Li-macro tse ngata ho C API li fetoloa mesebetsi e tloaelehileng kapa e tsitsitseng ea inline.
  • Uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, le li-module tsa sunau li tlositsoe 'me li tla tlosoa Python. 3.13 tokollo. E tlositsoe mesebetsi ea PyUnicode_Encode*.

Source: opennet.ru

Eketsa ka tlhaloso