Kuburitswa kwePython 3.11 programming mutauro

Mushure megore rekusimudzira, kuburitswa kwakakosha kwePython 3.11 programming mutauro kwakaburitswa. Bazi idzva richatsigirwa kwegore nehafu, mushure memamwe makore matatu nehafu, zvigadziriso zvichagadzirwa kuti zvibvise kusasimba.

Panguva imwecheteyo, kuongororwa kwealpha kwebazi rePython 3.12 kwakatanga (maererano nehurongwa hutsva hwekuvandudza, kushanda pabazi idzva kunotanga mwedzi mishanu isati yaburitswa bazi rapfuura uye rinosvika padanho rekuyedza alpha panguva yekuburitswa kunotevera. ) Iyo Python 3.12 bazi richange riri mukuburitswa kwealpha kwemwedzi minomwe, panguva iyo maficha matsva achawedzerwa uye tsikidzi dzakagadziriswa. Mushure meizvi, beta vhezheni dzichayedzwa kwemwedzi mitatu, panguva iyo kuwedzera maficha kucharambidzwa uye kutariswa kwese kuchabhadharwa kugadzirisa tsikidzi. Kwemwedzi miviri yokupedzisira kusunungurwa kusati kwaitwa, bazi richange riri padanho revanoda kusunungurwa, uye panozogadziriswazve.

Nyowani yekuwedzera kuPython 3.11 inosanganisira:

  • Basa rakakosha rakaitwa kuti rikwanise kuita basa. Bazi idzva rinosanganisira shanduko dzine chekuita nekumhanyisa uye inline deployment yekufona basa, kushandiswa kwevaturikiri vanokurumidza kwemaitiro akajairwa (x+x, x*x, xx, a[i], a[i] = z, f(arg) C( arg), o.method(), o.attr = z, *seq), pamwe nekugadzirisa kwakagadzirirwa nemapurojekiti eCinder neHotPy. Zvichienderana nerudzi rwemutoro, kune kuwedzera kwekodhi yekufambisa kumhanya kwe10-60%. Paavhareji, kuita papyperformance test suite kwakawedzera ne25%.

    Iyo bytecode caching mechanism yakagadziridzwa, izvo zvakaderedza nguva yekutangisa muturikiri ne10-15%. Zvinhu zvine kodhi uye bytecode zvino zvakagovaniswa nemuturikiri, izvo zvakaita kuti zvibvire kubvisa nhanho dzeunmarshalling bytecode yakabviswa mucache uye kushandura zvinhu zvine kodhi kuti zviiswe mundangariro ine simba.

  • Paunenge uchitaridza kuteedzera kufona mumameseji ekuongorora, zvave kugoneka kuratidza ruzivo nezve kutaura kwakakonzera kukanganisa (kare, mutsara chete wairatidzwa pasina kutsanangura kuti ndeipi chikamu chemutsara chakakonzera kukanganisa). Ruzivo rwakawedzerwa rwekutsvaga runogonawo kuwanikwa kuburikidza neAPI uye kushandiswa kumepu yega bytecode mirairo kune imwe nzvimbo mune kodhi kodhi uchishandisa codeobject.co_positions() nzira kana C API basa PyCode_Addr2Location(). Shanduko iyi inoita kuti zvive nyore kugadzirisa matambudziko nezvinhu zvakaiswa muduramazwi, mafoni emabasa akawanda, uye matauriro akaomarara e arithmetic. Traceback (ichangoburwa kufona kwekupedzisira): Faira "calculation.py", mutsara wechi54, mhedzisiro = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: division by zero
  • Yakawedzerwa rutsigiro kumapoka akasiyana, ichipa chirongwa kugona kugadzira uye kugadzirisa akati wandei akasiyana kamwechete. Kuti uunganidze akasiyana akawanda uye kuasimudza pamwe chete, mhando nyowani ExceptionGroup neBaseExceptionGroup dzakapihwa, uye izwi rekuti "kunze*" rawedzerwa kuratidza kusarudzika kwemunhu kubva muboka.
  • Iyo yekuwedzera_note () nzira yakawedzerwa kuBaseException kirasi, ichikubvumidza kuti ubatanidze chinyorwa chinyorwa kune kunze, semuenzaniso, kuwedzera ruzivo rwemamiriro ezvinhu asipo kana kusarudzika kukandwa.
  • Yakawedzera yakakosha Self type kumiririra yazvino kirasi yakavanzika. Kuzvigona kunogona kushandiswa kutsanangura nzira dzinodzosa muenzaniso wekirasi yayo nenzira iri nyore pane kushandisa TypeVar. class MyLock: def __enter__(self) -> Self: self.lock() dzokera wega
  • Yakawedzera rudzi rwakakosha rweLiteralString iyo inogona chete kusanganisira tambo chaiyo inofambirana neiyo LiteralString mhando (kureva, isina uye LiteralString tambo, asi isingaite zvekupokana kana yakasanganiswa tambo). Iyo LiteralString mhando inogona kushandiswa kudzikamisa kupfuudza kwetambo nharo kumabasa, kutsiva zvisina tsarukano kwezvikamu zvetambo izvo zvinogona kutungamira mukusagadzikana, semuenzaniso, kana uchigadzira tambo dzeSQL queries kana goko mirairo. def run_query(sql: LiteralString) -> ... ... def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> Hapana: run_query("SARUDZA * KUBVA kuvadzidzi") # ok run_query(literal_string) # ok run_query( "SELECT * KUBVA" + literal_string) # ok run_query(arbitrary_string) # Error run_query( # Error f"SELECT * KUBVA kuvadzidzi PANE zita = {arbitrary_string}")
  • Mhando yeTypeVarTuple yakawedzerwa, ichibvumira kushandiswa kwemhando dzakasiyana-siyana, kusiyana neTypeVar, iyo inovhara kwete rudzi rumwe chete, asi nhamba yekupokana yemhando.
  • Iyo raibhurari yakajairwa inosanganisira iyo tomllib module ine mabasa ekufambisa iyo TOML fomati.
  • Zvinogoneka kumaka ega ega ega ega ega ega ega maduramazwi (TypedDict) ane Inodiwa uye NotRequired mavara kuti uone anodiwa uye esarudzo minda (nekusagadzika, ese akaziviswa minda inodiwa kana iyo yakazara parameter isina kuiswa kuNhema). class Movie(TypedDict): musoro: str gore: Hazvidiwi[int] m1: Movie = {"title": "Black Panther", "gore": 2018} # OK m2: Movie = {"title": "Star Wars" } # OK (munda wegore ndewekusarudza) m3: Firimu = {"gore": 2022} # Kanganiso, ndima yezita inodiwa haina kuzadzwa)
  • Iyo TaskGroup kirasi yakawedzerwa kune iyo asyncio module nekushandiswa kweasynchronous mamiriro maneja anomirira kuti boka remabasa ripedze. Kuwedzera mabasa kuboka kunoitwa uchishandisa iyo create_task() nzira. async def main(): async neasyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) dhinda("Mabasa ese ari maviri apedza izvozvi .")
  • Yakawedzerwa @dataclass_transform decorator yemakirasi, nzira uye mabasa, kana yatsanangurwa, iyo static type yekutarisa system inobata chinhu sekunge uchishandisa @dataclasses.dataclass decorator. Mumuenzaniso uri pazasi, ClasserModel kirasi, kana uchitarisa mhando, ichagadziriswa zvakafanana kune kirasi ine @dataclasses.dataclass decorator, i.e. sekuve ne __init__ nzira inogamuchira id uye mazita akasiyana. @dataclass_transform() kirasi ModelBase: ... kirasi MutengiModel(ModelBase): id: int zita: str.
  • Mumataurirwo enguva dzose, kugona kushandisa zvikwata zveatomiki ((?>...)) uye zvigadziriso zvezvinhu (+, ++, ?+, {m,n}+) zvawedzerwa.
  • Yakawedzerwa "-P" yekuraira mutsara sarudzo uye PYTHONSAFEPATH nharaunda inoshanduka kudzima otomatiki kunamatira kwezvingangoita zvisina kuchengetedzeka mafaera nzira kune sys.path.
  • Iyo py.exe yekushandisa yeWindows platform yakagadziridzwa zvakanyanya, ichiwedzera rutsigiro rwe "-V:" syntax. / " pamusoro pe "- . "
  • Mazhinji macros muC API anoshandurwa kuita akajairwa kana static inline mabasa.
  • Iyo uu, cgi, mapaipi, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, uye sunau modules zvakadzikiswa uye zvichabviswa muPython. 3.13 kuburitswa. Yakabviswa PyUnicode_Encode* mabasa.

Source: opennet.ru

Voeg