Ukukhishwa kolimi lokuhlela lwePython 3.10

Ngemuva konyaka wokuthuthuka, kwethulwa ukukhishwa okubalulekile kolimi lohlelo lwePython 3.10. Igatsha elisha lizosekelwa unyaka nengxenye, okuyothi ngemva kwalokho kweminye iminyaka emithathu nengxenye, kulungiswe ukuze kuqedwe ubuthakathaka.

Ngaso leso sikhathi, ukuhlolwa kwe-alpha kwegatsha le-Python 3.11 kwaqala (ngokuhambisana nohlelo olusha lokuthuthukiswa, umsebenzi egatsheni elisha uqala izinyanga ezinhlanu ngaphambi kokukhishwa kwegatsha langaphambilini futhi ufinyelela esigabeni sokuhlola i-alpha ngesikhathi sokukhishwa okulandelayo. ). Igatsha le-Python 3.11 lizobe liku-alpha izinyanga eziyisikhombisa, lapho izici ezintsha zizongezwa futhi kulungiswe iziphazamisi. Ngemuva kwalokhu, izinguqulo ze-beta zizohlolwa izinyanga ezintathu, lapho ukungeza izici ezintsha kuzovinjelwa futhi konke ukunaka kuzokhokhwa ekulungiseni iziphazamisi. Ezinyangeni ezimbili zokugcina ngaphambi kokukhululwa, igatsha liyobe lisesimweni sokukhululwa, lapho kuzokwenziwa khona ukuzinza kokugcina.

Izengezo ezintsha kuPython 3.10 zifaka:

  • Ama-opharetha "amatch" kanye "nekesi" asetshenzisiwe ukuze afaniswe nephethini, okuthuthukisa ukufundeka kwekhodi, ukwenza lula ukufanisa izinto zePython okungenasizathu, futhi kwandise ukwethembeka kwekhodi ngokuhlola uhlobo olumile oluthuthukisiwe. Ukusetshenziswa kufana kakhulu nomsebenzisi "womdlalo" onikezwe ku-Scala, Rust, kanye no-F#, oqhathanisa umphumela wenkulumo ecacisiwe nohlu lwamaphethini asohlwini lwamabhulokhi ngokusekelwe ku-opharetha "wecala".

    def http_iphutha(isimo): isimo sokufanisa: icala 400: buyisela "Isicelo esibi" icala 401|403|404: buyisela "Akuvunyelwe" icala 418: buyisela "Ngiyi-teapot" icala _: buyisela "Okunye"

    Ungakwazi ukupakisha izinto, ama-tuples, izinhlu, nokulandelana okungahleliwe ukuze ubophe okuguquguqukayo ngokusekelwe kumanani akhona. Kuvunyelwe ukuchaza izifanekiso ezibekwe esidlekeni, sebenzisa izimo ezengeziwe “uma” kusifanekiso, sebenzisa imaski (“[x, y, *rest]”), amamephu wokhiye/inani (ngokwesibonelo, {“bandwidth”: b, “latency ”: l} ukuze kukhishwe amanani "umkhawulokudonsa" kanye "nokugcina isikhathi" kusichazamazwi), khipha izifanekiso ezingezansi (":=" opharetha), sebenzisa ama-constants aqanjwe igama esifanekisweni. Emakilasini, kuyenzeka ukwenza ngendlela oyifisayo ukuziphatha okufanayo usebenzisa indlela ethi “__match__()”.

    kusuka kuma-dataclass ngenisa idathaclass @dataclass class Iphuzu: x: int y: int def whereis(iphuzu): iphuzu lokufanisa: icala Iphuzu(0, 0): phrinta("Origin") icala Iphuzu(0, y): phrinta(f" Y={y}") icala Iphuzu(x, 0): phrinta(f"X={x}") icala Iphuzu(): phrinta("Enye indawo") icala _: phrinta("Akulona iphuzu") okufanayo iphuzu: icala Iphuzu(x, y) uma x == y: phrinta(f"Y=X kokuthi {x}") icala Iphuzu(x, y): phrinta(f"Not on the diagonal") RED, LULUHLAZA, OKULUHLAZA okwesibhakabhaka = 0, 1, 2 umbala wokufanisa: icala RED: phrinta(“Ngibona okubomvu!”) icala ELILULUHLAZA: phrinta(“Utshani buluhlaza”) icala ELIBLUE: phrinta(“Ngizwa uhlaza :(“)

  • Manje sekungenzeka ukusebenzisa abakaki esitatimendeni ukuze kuhlukaniswe incazelo yeqoqo labaphathi bomongo emigqeni eminingi. Kuphinde kuvunyelwe ukushiya ukhefana ngemva komphathi wokuqukethwe wokugcina eqenjini: nge ( CtxManager1() njengesibonelo1, CtxManager2() njengesibonelo2, CtxManager3() njengesibonelo3, ): ...
  • Ukubikwa okuthuthukisiwe kwendawo yekhodi yamaphutha ahlobene nezikaki ezingavaliwe nezicashuniwe kuyunithi yezinhlamvu. Isibonelo, uma kukhona i-brace engavaliwe, esikhundleni sokubika iphutha le-syntax ekwakhiweni okulandelayo, isikhombisi manje sigqamisa i-brace yokuvula futhi sibonisa ukuthi asikho ibhulokhi yokuvala. Ifayela elithi "example.py", umugqa 1 ulindelwe = {9:1, 18:2, 19:2, 27:3, 28:3, 29:3, 36:4, 37:4, ^SyntaxError: '{' ayizange ivalwe

    Kwengezwe imilayezo yephutha ye-syntax ekhethekile: ":" uphawu olulahlekile ngaphambi kwebhulokhi nasezichazamazwini, lungahlukanisi i-tuple enabakaki, ishoda ngokhefana ezinhlwini, icacisa ibhulokhi elithi "zama" ngaphandle kokuthi "ngaphandle" kanye "nokugcina", kusetshenziswa "= " esikhundleni sokuthi "= =" uma kuqhathaniswa, kucaciswa *-izinkulumo kuchungechunge luka-f. Ngaphezu kwalokho, iqinisekisa ukuthi sonke isisho esiyinkinga siyagqanyiswa, hhayi nje isiqalo, kanye nolwazi olucacile mayelana nomxholo wamaphutha ahlobene nokuhlehlisa okungalungile. >>> def foo(): … uma lel: … x = 2 Ifayela “”, umugqa 3 x = 2 ^ I-IndentationError: bekulindeleke ibhulokhi ehlehlisiwe ngemva kwesitatimende esithi ‘uma’ emgqeni 2

    Emaphutha abangelwa ukuthayipha emagameni ezibaluli namagama ahlukile kumsebenzi, isincomo esinegama elilungile siyaphuma. >>> collections.namedtoplo Traceback (ucingo lwakamuva lugcine): Ifayela "", umugqa 1, kokuthi I-AttributeError: imojuli 'amaqoqo' ayinaso isibaluli 'namedtoplo'. Ubuqonde ukuthi: igama-tuple?

  • Ngamathuluzi okulungisa iphutha namaphrofayili, izenzakalo zokulandelela zinikezwa nezinombolo zomugqa eziqondile zekhodi ekhishiwe.
  • Kwengezwe ukulungiselelwa kwe-sys.flags.warn_default_encoding ukuze kuboniswe isexwayiso mayelana namaphutha angaba khona ahlotshaniswa ne-TextIOWrapper futhi i-open() icubungula amafayela afakwe ikhodi ye-UTF-8 ngaphandle kokucacisa ngokusobala inketho ethi ‘encoding=»utf-8″‘(umbhalo wekhodi we-ASCII usetshenziswa ngokuzenzakalelayo). Ukukhishwa okusha futhi kunikeza amandla okucacisa inani 'le-encoding="locale"' ukuze kusethwe umbhalo wekhodi ngokusekelwe endaweni yamanje.
  • U-opharetha omusha wengezwe kumojula yokuthayipha, ehlinzeka ngamathuluzi okucacisa uhlobo lwezichasiselo, okuvumela ukusetshenziswa kwe-syntax ethi “X | Y" ukuze ukhethe eyodwa yezinhlobo (uhlobo lwe-X noma uhlobo luka-Y). def square(inombolo: int | ntanta) -> int | iflothi: inombolo yokubuyisela ** 2 ilingana nesakhiwo esisekelwe ngaphambili: i-def square(inombolo: Inyunyana[int, float]) -> Inyunyana[int, float]: inombolo yokubuyisela ** 2
  • I-opharetha ye-Concatenate kanye ne-ParamSpec variable yengezwe kumojula yokuthayipha, ekuvumela ukuthi udlulise ulwazi olwengeziwe ukuze uhlole uhlobo olumile lapho usebenzisa i-Callable. Imojula yokuthayipha iphinde yengeze amanani akhethekile i-TypeGuard ukuze ichaze imisebenzi yokuvikela uhlobo kanye ne-TypeAlias ​​ukuze ichaze ngokucacile uhlobo lwesiteketiso. StrCache: TypeAlias ​​= 'Cache[str]' # uhlobo lwe-alias
  • Umsebenzi we-zip() usebenzisa ifulegi "eliqinile" elingakhethwa, okuthi, uma licacisiwe, lihlole ukuthi ingabe ama-agumenti aphindwayo anobude obufanayo yini. >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=Iqiniso)) [('a', 1), ('b', 2) , ('c', 3)] >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True)) Traceback (ucingo lwakamuva lugcine ): … ValueError: zip() i-agumenti 2 yinde kune-agumenti 1
  • Imisebenzi emisha eyakhelwe ngaphakathi i-aiter() kanye ne-anext() ihlongozwa ngokusetshenziswa kwama-analogue asynchronous kumsebenzi iter() kanye nokulandelayo().
  • Umsebenzi wabakhi be-str(), bytes() kanye ne-bytearray() uma usebenza ngezinto ezincane uye washeshisa ngo-30-40%.
  • Yehliswe inani lemisebenzi yokungenisa kumojula ye-runpy. Umyalo othi "python3 -m module_name" manje ugijima ngokwesilinganiso izikhathi ezingu-1.4 ngokushesha ngenxa yokwehliswa kwamamojula angenisiwe ukusuka ku-69 kuya ku-51.
  • Umyalelo we-LOAD_ATTR usebenzisa indlela yokugcina inqolobane yama-opcode angawodwana, okwenze kwaba nokwenzeka ukusheshisa umsebenzi ngezibaluli ezijwayelekile kufika ku-36%, kanye nezikhala ngokufika ku-44%.
  • Lapho wakha iPython ngenketho ethi “--enable-optimizations”, imodi ye-“-fno-semantic-interposition” manje isinikwe amandla, evumela ukusheshisa umhumushi kufika ku-30% uma kuqhathaniswa nokwakha nge-“--enable-shared. ” inketho.
  • Amamojula we-hahlib ne-ssl engeze usekelo lwe-OpenSSL 3.0.0 futhi ayeke ukusekela izinguqulo ze-OpenSSL ezindala kuno-1.1.1.
  • Umhlahleli omdala ukhishiwe, okuthathelwe indawo egatsheni langaphambili umhlaziyi we-PEG (Parsing Expression Grammar). Imojuli yefomethi isusiwe. Ipharamitha ye-loop isusiwe ku-asyncio API. Izindlela ebezihoxisiwe ngaphambilini zisusiwe. Imisebenzi ye-Py_UNICODE_str* ekhohlisa iyunithi yezinhlamvu ze-Py_UNICODE* isusiwe.
  • Imojula ye-distutils yehlisiwe futhi ihlelelwe ukususwa ku-Python 3.12. Esikhundleni se-distutils, kunconywa ukusebenzisa ama-setuptools, ukupakisha, ipulatifomu, i-shutil, i-subprocess kanye namamojula we-sysconfig. Isakhiwo se-wstr ku-PyUnicodeObject sihoxisiwe futhi kuhlelelwe ukususwa.

Source: opennet.ru

Engeza amazwana