Ukukhutshwa kolwimi lwenkqubo lwePython 3.10

Emva konyaka wophuhliso, ukukhutshwa okubalulekileyo kolwimi lwenkqubo yePython 3.10 kubonisiwe. Isebe elitsha liya kuxhaswa unyaka onesiqingatha, emva koko eminye iminyaka emithathu enesiqingatha, ukulungiswa kuya kwenziwa ukuze kupheliswe ubuthathaka.

Kwangaxeshanye, uvavanyo lwe-alpha lwesebe lePython 3.11 lwaqala (ngokuhambelana neshedyuli entsha yophuhliso, umsebenzi kwisebe elitsha uqala iinyanga ezintlanu ngaphambi kokukhutshwa kwesebe langaphambili kwaye ufikelele kwinqanaba lovavanyo lwe-alpha ngexesha lokukhutshwa okulandelayo. ). Isebe lePython 3.11 liya kuba kukukhutshwa kwe-alpha kangangeenyanga ezisixhenxe, apho izinto ezintsha ziya kongezwa kwaye iibugs ziya kulungiswa. Emva koko, uvavanyo lwe-beta luya kuqhutywa kwiinyanga ezintathu, apho ukongezwa kweempawu ezintsha kuya kuthintelwa kwaye yonke ingqalelo iya kuhlawulwa ukulungisa iziphene. Kwiinyanga ezimbini zokugqibela ngaphambi kokukhululwa, isebe liya kuba likwinqanaba lokukhululwa, apho kuya kwenziwa uzinzo lokugqibela.

Ukongezwa okutsha kwiPython 3.10 kubandakanya:

  • Iphunyeziwe "umdlalo" kunye "netyala" labaqhubi bokuthelekisa ipateni, ephucula ukufundeka kwekhowudi, ukwenza lula ukuhambelana kwezinto zePython ezingafanelekanga, kunye nokwandisa ukuthembeka kwekhowudi ngokujonga uhlobo oluphezulu lwe-static. Ukuphunyezwa kufana kakhulu nomsebenzisi "womdlalo" onikwe kwi-Scala, Rust, kunye ne-F#, ethelekisa isiphumo sentetho ekhankanyiweyo kunye noluhlu lweepatheni ezidweliswe kwiibhloko ezisekelwe kumsebenzisi "wemeko".

    def http_impazamo(isimo): imeko yomdlalo: ityala 400: buyisela "Isicelo esibi" ityala 401|403|404: buyisela "Akuvumelekanga" imeko 418: buyisela "Ndiyiteapot" imeko _: buyisela "Into eyenye"

    Uyakwazi ukukhupha izinto, ii-tuples, uluhlu, kunye nolandelelwano olungenasizathu ukubophelela iinguqu ezisekelwe kumaxabiso asele ekhona. Ivumelekile ukuba ichaze iitemplates ezifakwe kwindlwane, sebenzisa iimeko ezongezelelweyo "ukuba" kwitemplate, sebenzisa iimaski ("[x, y, *phumla]"), iqhosha / ixabiso lemephu (umzekelo, {"bandwidth": b, "latency ”: l} ukukhupha "i-bandwidth" kunye ne "latency" amaxabiso kwisichazi-magama), khupha iitemplates ezisezantsi (":=" umqhubi), sebenzisa amagama angatshintshiyo kwitemplate. Kwiiklasi, kuyenzeka ukuba ulungelelanise indlela yokuziphatha ehambelanayo usebenzisa "__match__ ()" indlela.

    ukusuka kuluhlu lwedatha yokungenisa idatha class @ iklasi yedatha Indawo: x: int y: int def apho (inqaku): indawo yomdlalo: indawo yecala (0, 0): print("Imvelaphi") imeko Indawo (0, y): print(f" Y={y}") inqaku lemeko(x, 0): print(f"X={x}") inqaku letyala ingongoma: icala Point(x, y) ukuba x == y: print(f"Y=X ngo {x}") icala Point(x, y): print(f"Not on the diagonal") RED, GREEN, BULUU = 0, 1, 2 umbala womdlalo: icala RED: print(“Ndibona ebomvu!”) icala LULULU: print(“Ingca iluhlaza”) ityesi OBLULU: print(“Ndiva amabhulowu :(“)

  • Ngoku kuyenzeka ukuba kusetyenziswe izibiyeli kwisiteyitimenti ukwahlula inkcazo yengqokelela yabalawuli bomxholo kwimigca emininzi. Kukwavumelekile ukushiya isiphumlisi emva komphathi womxholo wokugqibela kwiqela: kunye ( CtxManager1() njengomzekelo1, CtxManager2() njengomzekelo2, CtxManager3() njengomzekelo3, ): ...
  • Ukuphuculwa kwengxelo yendawo yekhowudi yeempazamo ezinxulumene neebrace ezingavalwanga kunye neengcaphuno kumtya woqobo. Ngokomzekelo, xa kukho i-brace engavalwanga, endaweni yokubika impazamo ye-syntax kwisakhiwo esilandelayo, isalathisi ngoku sigxininisa i-brace yokuvula kwaye ibonisa ukuba akukho bloko lokuvala. Ifayile "example.py", umgca 1 ulindelwe = {9:1, 18:2, 19:2, 27:3, 28:3, 29:3, 36:4, 37:4, ^SyntaxError: '{' ayizange ivalwe

    Imiyalezo eyongezelelweyo yempazamo yesintaksi eyongezelelweyo: engekhoyo ":" isimboli phambi kwebhloko nakwizichazi-magama, ingahluli i-tuple enezibiyeli, ilahlekile isiphumlisi kuluhlu, ichaza "try" block ngaphandle "ngaphandle" kunye "ekugqibeleni", usebenzisa "= " endaweni ye "= =" kuthelekiso, ikhankanya *-iintetho kumtya kaf. Ukongeza, iqinisekisa ukuba yonke intetho eyingxaki igxininisiwe, hayi nje isiqalo, kunye nolwazi olucace ngakumbi malunga nomxholo weempazamo ezinxulumene nokuhlenga kakuhle. >>> def foo(): ... ukuba lel: ... x = 2 Ifayile " ", umgca 3 x = 2 ^ Imposiso ye-Indentation: kulindeleke ibhloko ehlengisiweyo emva kwengxelo 'ukuba' kumgca 2

    Kwiimpazamo ezibangelwa yi-typos kumagama eempawu kunye namagama ahlukeneyo kumsebenzi, isincomo esinegama elichanekileyo siyaphuma. >>>collections.namedtoplo Traceback (umnxeba wamva nje wokugqibela): Ifayile « ", umgca 1, ngaphakathi Imposiso yophawu: imodyuli 'yeingqokelela' ayinayo uphawu loyelelwano 'namedtoplo'. Ubuthetha ukuthi: igamatuple?

  • Kwizixhobo zokulungisa iimpazamo kunye neeprofayili, iziganeko zokulandelela zibonelelwa ngamanani achanekileyo omgca wekhowudi eyenziweyo.
  • Kufakwe i-sys.flags.warn_default_encoding setting ukubonisa isilumkiso malunga neemposiso ezinokubakho ezinxulumene ne-TextIOWrapper kunye nokuvula () ukucubungula iifayile ezikhowudiweyo ze-UTF-8 ngaphandle kokuchaza ngokucacileyo ukhetho 'lweencoding=»utf-8″' (ufakelo lwekhowudi lwe-ASCII lusetyenziswa ngokungagqibekanga). Ukhupho olutsha lukwabonelela ngokukwazi ukukhankanya i-'encoding="locale"' ixabiso lokuseta usebenziso lwekhowudi olusekwe kwindawo yangoku.
  • Umsebenzisi omtsha wongezwe kwimodyuli yokuchwetheza, ebonelela ngezixhobo zokuchaza uhlobo lwenkcazelo, evumela usebenziso lwesivakalisi “X | Y" ukukhetha olunye lweentlobo (udidi lwe-X okanye uhlobo luka-Y). def isikwere(inombolo: int | dada) -> int | dada: inombolo yokubuyisela ** i-2 ilingana nolwakhiwo oluxhasiweyo ngaphambili: i-def square(inombolo: Umanyano[int, dada]) -> Umanyano[int, dada]: inombolo yokubuyisela ** 2
  • Umsebenzisi we-Concatenate kunye ne-ParamSpec variable yongezwe kwimodyuli yokuchwetheza, ekuvumela ukuba udlulise ulwazi olongezelelweyo lokukhangela uhlobo lwe-static xa usebenzisa i-Callable. Imodyuli yokuchwetheza yongeza amaxabiso akhethekileyo iTypeGuard ukuchaza imisebenzi yokukhusela uhlobo kunye ne-TypeAlias ​​​​ukuchaza ngokucacileyo uhlobo lwe-alias. StrCache: TypeAlias ​​= 'Cache[str]' # uhlobo lwe-alias
  • I zip () umsebenzi sebenzisa iflegi "engqongqo" ekhethwayo, ethi, xa ikhankanyiwe, ijonge ukuba iimpikiswano eziphindwayo zinobude obufanayo. >>> uluhlu(zip(('a', 'b', 'c'), (1, 2, 3), ngqongqo=Yinyani)) [('a', 1), ('b', 2) , ('c', 3)] >>> uluhlu(zip(uluhlu(3), ['umrhumo', 'fi', 'fo', 'fum'], strict=Yinyani)) Traceback (eyona fowuni yamva nje igqibele ): … Imposiso yexabiso: zip() ingxabano 2 inde kunengxoxo 1
  • Imisebenzi emitsha eyakhelwe-ngaphakathi i-aiter () kunye nelandelayo () iyacetywa ngokuphunyezwa kwee-analogue ezilinganayo kwimisebenzi iter () kunye nelandelayo ().
  • Umsebenzi we-str (), ii-bytes () kunye ne-bytearray () abakhi xa usebenza ngezinto ezincinci uye wakhawuleza nge-30-40%.
  • Ukunciphisa inani lemisebenzi yokungenisa ngaphakathi kwimodyuli ebalekayo. Umyalelo othi "python3 -m module_name" ngoku uqhuba umyinge wamaxesha e-1.4 ngokukhawuleza ngenxa yokunciphisa iimodyuli ezithunyelwa ngaphandle ukusuka kwi-69 ukuya kwi-51.
  • Umyalelo we-LOAD_ATTR usebenzisa i-caching mechanism kwii-opcodes zomntu ngamnye, eyenze ukuba kube lula ukukhawulezisa umsebenzi kunye neempawu eziqhelekileyo ukuya kuma-36%, kunye neendawo zokubeka ukuya kuma-44%.
  • Xa usakha iPython nge "--enable-optimizations" ukhetho, imowudi "-fno-semantic-interposition" yenziwe ngoku, evumela ukukhawulezisa itoliki ukuya kuthi ga kwi-30% xa kuthelekiswa nokwakha nge "--enable-shared. ” ukhetho.
  • Iimodyuli ze-hahlib kunye ne-ssl zongeze inkxaso ye-OpenSSL 3.0.0 kwaye yayeka ukuxhasa iinguqulelo ze-OpenSSL ezindala kuno-1.1.1.
  • I-Parsing Expression Grammar (i-Parsing Expression Grammar) endaweni yayo isusiwe kwisebe langaphambili. Imodyuli yolungiselelo isusiwe. Ipharamitha yelophu isusiwe kwi-asyncio API. Iindlela ebezingasetyenziswa ngaphambili ziye zasuswa. I Py_UNICODE_str* imisebenzi ekhohlisa Py_UNICODE* imitya isusiwe.
  • Imodyuli ye-distutils iye yarhoxiswa kwaye icwangciselwe ukususwa kwiPython 3.12. Esikhundleni se-distutils, kucetyiswa ukuba usebenzise i-setuptools, ukupakishwa, iqonga, i-shutil, i-subprocess kunye neemodyuli ze-sysconfig. Isakhiwo se-wstr kwi-PyUnicodeObject sirhoxisiwe kwaye sicwangciselwe ukususwa.

umthombo: opennet.ru

Yongeza izimvo