Te tukunga o te Python 3.8 te reo hotaka

I muri i te tau me te hawhe o te whanaketanga i tukuna te whakaputanga reo hootaka nui Python 3.8. Nga whakahou whakatika mo te peka Python 3.8 kua whakamaheretia tuku i roto i te 18 marama. Ka whakatikahia nga whakaraeraetanga mo te 5 tau tae noa ki Oketopa 2024. Ko nga whakahoutanga whakatikatika mo te peka 3.8 ka tukuna ia rua marama, me te tukunga whakatikatika tuatahi o Python 3.8.1 kua whakaritea mo Hakihea.

I roto i nga taapiri nga mahi auaha:

  • support mahi taumahi i roto i nga korero uaua. Ma te kaiwhakahaere hou ":=", ka taea te mahi i nga mahi taumahi uara i roto i etahi atu korero, hei tauira, hei karo i nga waea mahi rua i roto i nga tauākī here me te tautuhi i nga koropiko:

    mehemea (n := len(a)) > 10:
    ...

    while (block := f.read(256)) !=":
    ...

  • support he wetereo hou mo te tohu tohenga mahi. I te tatau i nga tautohetohe i roto i te whakamaramatanga mahi, ka taea e koe te tohu "/" ki te wehe i nga tohenga ka taea anake te whakatau i nga uara i runga i te raupapa o nga uara i te wa o te waea mahi, mai i nga tautohetohe ka taea te tautapa. i roto i tetahi ota (taurangi=uara syntax) ). I te taha mahi, ka taea e te waahanga hou nga mahi i roto i te Python ki te whai i te whanonga o nga mahi o naianei i roto i te C, me te karo ano hoki i te herea ki nga ingoa motuhake, hei tauira, mena kua whakamaherehia te ingoa tawhā ki te huri a muri ake nei.

    Ko te haki “/” he whakakii i te haki “*” kua taapirihia i mua, ka wehe i nga taurangi he taumahi anake i te ahua “taurangi=uara” e tika ana. Hei tauira, i roto i te mahi "def f(a, b, /, c, d, *, e, f):" ko nga taurangi "a" me "b" ka taea anake te whakarite i roto i te raupapa kua whakarārangihia nga uara. ,
    taurangi “e” me “f”, na roto noa i te taumahi “taurangi=uara”, me nga taurangi “c” me “d” i roto i nga huarahi e whai ake nei:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

  • Kua tapirihia hou C API
    ki te whirihora i nga tawhā arawhiti a Python, ka taea te whakahaere katoa whirihoranga me te whakarato i nga taputapu whakahaere hapa matatau. Ko te API e whakaarohia ana he ngawari ki te whakauru i nga mahi whakamaori reo Python ki etahi atu tono C;

  • Kua whakatinanahia kawa Vectorcall hou kia tere ake te uru ki nga taonga kua tuhia ki te reo C. I roto i te CPython 3.8, he iti tonu te uru ki te Vectorcall ki te whakamahi o roto, ko te whakawhiti ki te waahanga o nga API ka taea e te iwi whanui te whakamahere i roto i te CPython 3.9;
  • Kua tapirihia ka waea atu ki Runtime Audit Hooks, e whakarato ana i nga tono me nga anga i roto i te Python me te uru ki nga korero taumata-iti mo te ahunga whakamua o te tuhinga hei tirotiro i nga mahi i mahia (hei tauira, ka taea e koe te whai i te kawemai o nga waahanga, te whakatuwhera i nga konae, te whakamahi i te tohu, te uru ki nga turanga whatunga, te whakahaere waehere ma te exec, eval me te run_mod);
  • I roto i te kōwae pihi whakaratohia te tautoko mo te kawa Pickle 5, e whakamahia ana mo te raupapa raupapa me te whakakore i nga taonga. Ka taea e Pickle te arotau i te whakawhitinga o nga raraunga nui i waenga i nga tukanga Python i roto i nga whirihoranga maha-matua me te maha-node ma te whakaiti i te maha o nga mahi kape mahara me te whakamahi i etahi atu tikanga arotautanga penei i te whakamahi i nga huringa taapiri-raraunga motuhake. Ko te putanga tuarima o te kawa he mea rongonui mo te taapiri o te aratau tuku-waho, ka taea te tuku raraunga motuhake mai i te awa pikapi matua.
  • Ma te taunoa, ka whakahohehia te putanga tuawha o te kawa Pickle, ka whakatauritea ki te putanga tuatoru i tukuna i mua ma te taunoa, ka taea te mahi teitei ake me te whakaheke i te rahi o nga raraunga tuku;
  • I roto i te kōwae tuhi He maha nga waahanga hou kua whakauruhia:
    • Класс TypedDict mo nga hurangi hono i roto i te momo momo korero kua tino tohua mo nga raraunga e pa ana ki nga taviri ("TypedDict('Point2D', x=int, y=int, label=str)”).
    • Momo Tita, ka taea e koe te whakawhāiti i te tawhā, te whakahoki uara ranei ki etahi uara kua tautuhia (“Moinui['hono', 'motuhake']”).
    • Hoahoa "Final", ka taea te tautuhi i nga uara o nga taurangi, nga mahi, nga tikanga me nga karaehe kaore e taea te whakarereke, te whakarereke ranei ("pi: Whakamutunga[maanu] = 3.1415926536").
  • Kua taapirihia te kaha ki te tautapa i te keteroki mo nga konae kua whakahiato me te bytecode, ka tiakina ki tetahi rakau FS motuhake ka wehea mai i nga raarangi me te waehere. Ko te ara mo te tiaki i nga konae me te bytecode kua whakaritea ma te taurangi PYTHONPYCACHEPREFIX te kōwhiringa "-X pycache_prefix" ranei;
  • Kua whakatinanahia te kaha ki te hanga hanga patuiro o Python e whakamahi ana i te ABI e rite ana ki te tukunga, e taea ai e koe te uta i nga toronga kua tuhia ki te reo SI, kua whakahiatohia mo nga whakaputanga pumau, i roto i nga hanga patuiro;
  • Ko nga aho-f (nga kupu kua whakahōputuhia ki mua ki te 'f') he tautoko mo te = operator (hei tauira, "f'{expr=}'"), e taea ai e koe te huri i tetahi kupu ki te kupu kia ngawari ake te patuiro. Hei tauira:

    ››› kaiwhakamahi = 'eric_idle'
    ››› mema_mai = ra(1975, 7, 31)
    ››› f'{kaiwhakamahi=} {mema_mai=}'
    "kaiwhakamahi='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Whakaaturanga"tonu» whakaaetia kia whakamahia i roto i tetahi poraka hopea;
  • Kua taapirihia te waahanga hou multiprocessing.shared_memory, ka taea te whakamahi i nga wahanga mahara tiritiri i roto i nga whirihoranga multiprocess;
  • I runga i te papanga Windows, kua nekehia te whakatinanatanga asyncio ki te whakamahi i te akomanga ProactorEventLoop;
  • Ko te mahinga o te ako LOAD_GLOBAL kua piki ake i te 40% na te whakamahi i tetahi tikanga keteroki waehere ahanoa hou.

Source: opennet.ru

Tāpiri i te kōrero