Siideynta luuqada barnaamijka Python 3.11

Ka dib hal sano oo horumarin ah, siideynta muhiimka ah ee luuqadda barnaamijka Python 3.11 ayaa la daabacay. Laanta cusub ayaa la taageeri doonaa hal sano iyo badh, ka dib saddex sano iyo badh kale, waxaa loo samayn doonaa hagaajin si meesha looga saaro dayacanka.

Isla mar ahaantaana, tijaabada alfa ee laanta Python 3.12 ayaa bilaabatay (iyadoo la raacayo jadwalka horumarinta cusub, shaqada laanta cusub waxay bilaabmaysaa shan bilood ka hor inta aan la sii dayn laantii hore oo waxay gaadhay heerka tijaabada alfa wakhtiga sii deynta soo socota ). Laanta Python 3.12 waxay ku jiri doontaa alfa siideynta todobo bilood, inta lagu guda jiro sifooyin cusub ayaa lagu dari doonaa oo la hagaajin doonaa cayayaanka. Taas ka dib, noocyada beta ayaa la tijaabin doonaa muddo saddex bilood ah, inta lagu guda jiro ku darista sifooyin cusub waa la mamnuuci doonaa waxaana dhammaan dareenka la siin doonaa hagaajinta cayayaanka. Labadii bilood ee la soo dhaafay ka hor inta aan la sii dayn, laantu waxay ahaan doontaa heerka musharraxa sii deynta, kaas oo xasilinta kama dambaysta ah la samayn doono.

Kudarida cusub ee Python 3.11 waxaa ka mid ah:

  • Shaqo muhiim ah ayaa la qabtay si kor loogu qaado waxqabadka. Laanta cusub waxa ka mid ah isbeddelada la xidhiidha dardargelinta iyo dirida khadka tooska ah ee wicitaanada shaqada, adeegsiga turjubaanada degdega ah ee hawlgallada caadiga ah (x+x, x*x, xx, a[i], a[i] = z, f(arg) C ( arg), o.hab (), o.attr = z, *seq), iyo sidoo kale hagaajinta ay diyaariyeen mashaariicda Cinder iyo HotPy. Iyadoo ku xiran nooca culeyska, waxaa jira kororka xawaaraha fulinta code ee 10-60%. Celcelis ahaan, wax qabadka qolka tijaabada pyperformance ayaa kordhay 25%.

    Habka kaydinta bytecode dib ayaa loo habeeyay, kaas oo hoos u dhigay wakhtiga bilowga turjubaanka 10-15%. Walxaha leh koodka iyo bytecode ayaa hadda si istiqaalad ah u qoondeeyay turjumaanku, taas oo suurtagelisay in la baabi'iyo marxaladaha bytecode-ka aan la soo koobi karin ee laga soo saaray kaydinta iyo beddelidda walxaha leh koodka si loogu dhejiyo xusuusta firfircoon.

  • Marka lagu soo bandhigo raadadka wicitaanka ee farriimaha ogaanshaha, hadda waxaa suurtagal ah in la muujiyo macluumaadka ku saabsan muujinta qaladka keentay (horay, kaliya khadka ayaa la iftiimiyay iyada oo aan faahfaahin qaybta ka mid ah xariiqda qaladka keentay). Macluumad dheeri ah ayaa sidoo kale laga heli karaa API-ga waxaana loo isticmaali karaa in lagu khariidado tilmaamaha bytecode shakhsi ahaaneed meel gaar ah oo ka mid ah koodhka isha iyadoo la adeegsanayo codeobject.co_positions () habka ama shaqada C API PyCode_Addr2Location (). Isbeddelku wuxuu aad u fududeeyaa in lagu saxo dhibaatooyinka walxaha qaamuuska ee buulkooda leh, wicitaanno shaqo oo badan, iyo tibaaxaha xisaabeed ee adag. Dib-u-soo-celinta (wiciddii ugu dambeysay): Fayl "calculation.py", sadarka 54, natiijada = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: qaybinta eber
  • Taageero lagu daray kooxaha ka reeban, iyadoo siinaya barnaamijka awood uu ku soo saaro oo uu halmar ka sameeyo dhawr waxyaalood oo ka reeban oo kala duwan. Si loo kooxeeyo dhawr ka reeban oo la isu keeno, noocyo cusub oo ka reeban ExceptionGroup iyo BaseExceptionGroup ayaa la soo jeediyay, iyo odhaahda "marka laga reebo*" ayaa lagu daray si loo muujiyo shakhsiyaadka ka reeban koox.
  • Habka add_note() ayaa lagu daray fasalka BaseException, taasoo kuu ogolaanaysa inaad qoraal qoraal ah ku soo lifaaqdo marka laga reebo, tusaale ahaan, ku darista macluumaadka guud ee aan la heli karin marka ka reebanaanshaha la tuuro.
  • Waxaa lagu daray nooc gaar ah si uu u matalo fasalka gaarka ah ee hadda jira. Nafta waxaa loo isticmaali karaa in lagu qeexo hababka soo celinaya tusaale ka mid ah fasalkeeda si ka fudud marka loo eego isticmaalka TypeVar. fasalka MyLock: iska ilaali __ geli __ (nafta) -> Nafta: quful () nafta soo celi
  • Waxaa lagu daray nooc LiteralString gaar ah oo ay ku jiri karaan oo keliya xargaha xargaha ee la jaan qaadaya nooca LiteralString (ie, bare iyo LiteralString strings, laakiin aan sabab lahayn ama xargaha xargaha la isku daray). Nooca LiteralString waxaa loo isticmaali karaa in lagu xaddido gudbinta doodaha xargaha ee shaqooyinka, beddelka aan sharciga ahayn ee qaybo ka mid ah xargaha taas oo u horseedi karta nugul, tusaale ahaan, marka la abuurayo xargaha su'aalaha SQL ama amarrada qolofka. def run_query (sql: LiteralString) -> ... ... diidi waciyaha (arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> Midna: run_query ("Xul * Ardayda") # ok run_query # ok run_query( "Dooro * FROM" + Literal_string) # ok run_query(arbitrary_string) # Error run_query
  • Nooca TypeVarTuple ayaa lagu daray, taas oo u oggolaanaysa isticmaalka isbeddelka generics, ka duwan TypeVar, kaas oo aan daboolin hal nooc, laakiin tiro aan sabab lahayn oo noocyo ah.
  • Maktabadda caadiga ah waxaa ku jira moduleka tomlib oo leh hawlo lagu falanqeynayo qaabka TOML.
  • Waa suurtogal in lagu calaamadiyo walxaha gaarka ah ee qaamuusyada teebaysan (TypedDict) calaamado loo baahan yahay iyo kuwa aan loo baahnayn si loo go'aamiyo goobaha loo baahan yahay iyo kuwa ikhtiyaariga ah (sida caadiga ah, dhammaan goobaha la caddeeyey ayaa loo baahan yahay haddii wadarta cabbirka aan loo dhigin Been). fasalka Filimka (TypedDict): cinwaanka: str year: NotRequired[int] m1: Filim = {"ciwaanka": "Black Panther", "sanad": 2018} # OK m2: Filim = {"ciwaanka": "Star Wars" } # OK (goobta sanadka waa ikhtiyaari) m3: Filim = {"sanad": 2022} # Khalad, goobta cinwaanka loo baahan yahay lama buuxin)
  • Fasalka TaskGroup waxa lagu daray moduleka asyncio iyada oo la fulinayo maamulaha macnaha guud ee sugaysa koox hawlo ah si ay u dhamaystiraan. Ku darista hawlaha kooxda waxa la sameeyaa iyadoo la isticmaalayo habka create_task(). async def main(): async with asyncio.TaskGroup() sida tg: task1 = tg.create_task(qaar_coro(...)) task2 = tg.create_task(kale_coro(...)) daabac("Labada hawlood hadda way dhammaysteen ")
  • lagu daray @dataclass_transform decorator ee fasalada, hababka iyo shaqooyinka, marka la cayimo, nidaamka hubinta nooca taagan wuxuu ula dhaqmaa shayga sidii isagoo isticmaalaya @dataclasses.dataclass qurxinta. Tusaalaha hoose, fasalka CustomerModel, marka la hubinayo noocyada, waxa loo habayn doonaa si la mid ah fasalka leh @dataclasses.dataclass qurxinta, i.e. sida lahaanshaha __init__ habka aqbala id iyo doorsoomayaasha magac. @dataclass_transform() fasalka ModelBase: ... class CustomerModel(ModelBase): id: int name: str
  • Tibaaxaha caadiga ah, awoodda isticmaalka kooxaynta atomiga ((?>...)) iyo qiyaasaha lahaanshaha (*+, ++, ?+, {m,n}+) ayaa lagu daray.
  • Lagu daray "-P" ikhtiyaarka khadka taliska iyo doorsoomiyaha deegaanka PYTHONSAFEPATH si loo baabi'iyo ku xidhidhiyaha tooska ah ee dariiqyada faylka ee suurtogalka ah ee amniga sys.path.
  • Utility py.exe ee madal Windows si weyn ayaa loo hagaajiyay, isagoo ku daray taageerada "-V:" syntax. / " marka lagu daro "- . "
  • Macro badan oo ku jira C API ayaa loo beddelaa hawlo khadka tooska ah ama joogtada ah.
  • The uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, snhddr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, iyo sunau modules waa la gooyay waxaana laga saari doonaa Python-ka 3.13 sii deyn PyUnicode_Encode* la saaray

Source: opennet.ru

Add a comment