Te tukunga o te Python 3.11 te reo hotaka

I muri i te tau o te whakawhanaketanga, kua whakaputaina te whakaputanga nui o te reo hotaka Python 3.11. Ka tautokohia te peka hou mo te kotahi me te hawhe tau, ka mutu mo etahi atu tau e toru me te haurua, ka hangaia he whakatikatika hei whakakore i nga whakaraeraetanga.

I te wa ano, i timata te whakamatautau alpha mo te peka Python 3.12 (i runga i te rarangi whanaketanga hou, ka timata te mahi i runga i te peka hou e rima marama i mua i te tukunga o te peka o mua ka tae ki te waahi whakamatautau alpha i te wa o te tukunga e whai ake nei. ). Ka noho te peka Python 3.12 ki te tuku alpha mo nga marama e whitu, ka taapirihia nga ahuatanga hou ka whakatika nga pepeke. I muri i tenei, ka whakamatauria nga putanga beta mo nga marama e toru, i te waa ka aukatihia te taapiri i nga waahanga hou ka aro katoa ki te whakatika i nga pepeke. Mo nga marama e rua kua pahure ake nei i mua i te tukunga, ka noho te peka ki te waahi o te kaitono tuku, ka whakahaerea te whakapumautanga whakamutunga.

Ko nga taapiri hou ki te Python 3.11 ko:

  • He nui nga mahi kua mahia hei arotau i nga mahi. Kei roto i te peka hou nga huringa e pa ana ki te whakaterenga me te hora o nga waea mahi, te whakamahi i nga kaiwhakamaori tere o nga mahi paerewa (x+x, x*x, xx, a[i], a[i] = z, f(arg) C( arg), o.method(), o.attr = z, *seq), me nga arotautanga i whakaritea e nga kaupapa Cinder me HotPy. I runga i te momo kawenga, ka piki ake te tere o te mahi waehere o 10-60%. I te toharite, ko nga mahi i runga i te huinga whakamatautau pyperformance i piki ake ma te 25%.

    Kua hoahoatia ano te tikanga keteroki bytecode, i whakaitihia te wa whakaoho whakamaori ma te 10-15%. Ko nga mea whai waehere me te bytecode inaianei kua tohatohahia e te kaiwhakamaori, i taea ai te whakakore i nga waahanga o te unmarshalling bytecode i tangohia mai i te keteroki me te huri i nga mea me te waehere hei whakanoho ki roto i te mahara hihiri.

  • I te wa e whakaatu ana i nga tohu waea i roto i nga karere tātaritanga, ka taea te whakaatu i nga korero mo te korero i puta ai te hapa (i mua, ko te raina anake i tohuhia me te kore e whakaatu ko tehea waahanga o te raina i puta te hapa). Ka taea hoki te tiki atu i nga korero taapiri ma te API me te whakamahi ki te mapi i nga tohutohu bytecode takitahi ki tetahi waahi motuhake i roto i te waehere puna ma te whakamahi i te tikanga codeobject.co_positions() me te mahi C API PyCode_Addr2Location(). Ma te huringa ka ngawari ake te patuiro i nga raru me nga ahanoa papakupu kohanga, nga waea mahi maha, me nga korero tauhanga uaua. Whakamuri (te waeatanga tata whakamutunga): Kōnae "calculation.py", raina 54, hei hua = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: wehenga ma te kore
  • He tautoko taapiri mo nga roopu tuunga, ka whai waahi te hotaka ki te whakaputa me te tukatuka i nga momo rereke rereke i te wa kotahi. Hei whakarōpū i nga okotahi maha me te whakaara tahi, ko nga momo rerekee hou ko ExceptionGroup me BaseExceptionGroup kua tohua, a kua taapirihia te kupu "haunga*" hei whakanui i nga tuunga takitahi mai i te roopu.
  • Ko te tikanga add_note() kua taapirihia ki te akomanga BaseException, ka taea e koe te taapiri i tetahi tuhi tuhi ki te tuunga, hei tauira, te taapiri i nga korero horopaki kaore i te waatea i te wa ka makahia te tuunga.
  • Kua taapirihia he momo Whaiaro motuhake hei tohu mo te akomanga motuhake o naianei. Ka taea te whakamahi i a koe ake ki te tuhi i nga tikanga e whakahoki mai ana i tetahi tauira o tana karaehe ma te ngawari ake i te whakamahi i te TypeVar. akomanga MyLock: def __enter__(self) -> Self: self.lock() return self
  • Kua taapirihia he momo LiteralString motuhake ka taea anake te whakauru i nga kupu aho aho e hototahi ana ki te momo LiteralString (arā, nga aho korekore me nga aho LiteralString, engari ehara i te aho noa, i nga aho str whakakotahi ranei). Ka taea te whakamahi i te momo LiteralString ki te whakawhāiti i te tuku tohenga aho ki nga mahi, te whakakapi i nga waahanga o nga aho ka puta he whakaraeraetanga, hei tauira, i te wa e whakaputa ana i nga aho mo nga patai SQL me nga whakahau anga. def run_query(sql: LiteralString) -> ... ... def kaiwaea( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> Kore: run_query("KORERO * MAI i nga tauira") # ok run_query(literal_string) # ok run_query( "KORERO * MAI" + literal_string) # ok run_query(arbitrary_string) # Hapa run_query( # Hapa f"KITI * MAI i nga tauira WHERE ingoa = {arbitrary_string}" )
  • Kua taapirihia te momo TypeVarTuple, ka taea te whakamahi i nga momo momo rereke, kaore i rite ki te TypeVar, kaore e kapi i te momo kotahi, engari he maha nga momo momo.
  • Kei roto i te whare pukapuka paerewa te kōwae tomllib me nga mahi mo te tarai i te whakatakotoranga TOML.
  • Ka taea te tohu i nga huānga takitahi o nga papakupu kua patohia (TypedDict) me nga tapanga Required and NotRequired hei whakatau i nga apure e hiahiatia ana me te kowhiringa (ma te taunoa, ka hiahiatia nga apure kua whakahuahia ki te kore te tawhā katoa e tautuhia ki te Heke). class Movie(TypedDict): taitara: str year: NotRequired[int] m1: Whitiāhua = {"title": "Black Panther", "year": 2018} # OK m2: Whitiāhua = {"title": "Star Wars" } # ĀE (he kōwhiri te āpure tau) m3: Whitiāhua = {“tau”: 2022} # Hapa, kāore i whakakīhia te āpure taitara e hiahiatia ana)
  • Kua taapirihia te karaehe TaskGroup ki te kōwae asyncio me te whakatinanatanga o te kaiwhakahaere horopaki tukutahi e tatari ana kia oti te roopu o nga mahi. Ko te taapiri i nga mahi ki tetahi roopu ka mahia ma te whakamahi i te tikanga create_task(). async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("Kua oti nga mahi e rua inaianei .")
  • Kua taapirihia te @dataclass_transform whakapaipai mo nga karaehe, nga tikanga me nga mahi, ina tohua, ko te punaha arowhai momo pateko ka mahi i te ahanoa me te mea e whakamahi ana i te @dataclasses.dataclass whakapaipai. I roto i te tauira i raro nei, ko te akomanga KiritakiModel, i te wa e tirotirohia ana nga momo, ka rite ki te karaehe me te @dataclasses.dataclass decorator, i.e. he tikanga __init__ e whakaae ana ki nga taurangi id me te ingoa. @dataclass_transform() class ModelBase: … class CustomerModel(ModelBase): id: int name: str
  • I roto i nga korero auau, kua taapirihia te kaha ki te whakamahi i te whakarōpū ngota ((?>...)) me te inenga whai (*+, ++, ?+, {m,n}+).
  • Kua taapirihia te kowhiringa rarangi whakahau "-P" me te taurangi taiao PYTHONSAFEPATH hei whakakore i te taapiri aunoa o nga ara konae karekau pea ki te sys.path.
  • Ko te taputapu py.exe mo te papanga Windows kua tino pai ake, me te taapiri i te tautoko mo te "-V:" wetereo. / " hei taapiri "- . "
  • He maha nga tonotono i roto i te C API ka huri ki nga mahi raupaparorohiko tuuturu ranei.
  • Ko nga uu, cgi, paipa, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, me sunau modules kua whakakorehia, ka tangohia ki te Python 3.13 tuku. Kua tangohia nga mahi PyUnicode_Encode*.

Source: opennet.ru

Tāpiri i te kōrero