Ukukhutshwa kolwimi lwenkqubo lwePython 3.8

Emva konyaka kunye nesiqingatha sophuhliso thaca ukukhutshwa kolwimi lwenkqubo enkulu Python 3.8. Uhlaziyo olulungileyo lwePython 3.8 yesebe icwangcisiwe ukukhululwa kwiinyanga ezili-18. Ubuthathaka obubalulekileyo buya kulungiswa iminyaka emi-5 kude kube ngu-Okthobha wama-2024. Uhlaziyo oluchanekileyo lwesebe le-3.8 luya kukhutshwa rhoqo emva kweenyanga ezimbini, kunye nokukhululwa kokuqala kokulungiswa kwePython 3.8.1 ecwangciselwe uDisemba.

Phakathi kokongezwayo ezintsha:

  • inkxaso imisebenzi yezabelo ngaphakathi kweentetho ezinzima. Ngomsebenzi omtsha ":=", kuyenzeka ukwenza imisebenzi yexabiso ekwabelwana ngayo ngaphakathi kwamanye amabinzana, umzekelo, ukunqanda ukufowuna okuphindiweyo kwiingxelo ezinemiqathango naxa uchaza iilophu:

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

    ngelixa (ibhloko := f.read(256)) != ":
    ...

  • inkxaso Isivakalisi esitsha sokuchaza iimpikiswano zomsebenzi. Xa ubala iimpikiswano ngexesha lenkcazo yomsebenzi, ngoku ungakhankanya i "/" ukwahlula iingxoxo ezinokwabelwa amaxabiso kuphela ngokusekelwe kulandelelwano apho amaxabiso abalwa khona ngexesha lomsebenzi womnxeba, ukusuka kwiimpikiswano ezinokwabelwa. nangaluphi na ulandelelwano (i-variable=value syntax) ). Kwicala elisebenzayo, into entsha ivumela imisebenzi kwiPython ukuba ilandele ngokupheleleyo ukuziphatha kwemisebenzi ekhoyo kwi-C, kunye nokuphepha ukubophelela kumagama athile, umzekelo, ukuba igama leparameter licetywa ukuba litshintshwe kwixesha elizayo.

    Iflegi ethi “/” incedisana neflegi ethi “*” eyongeziweyo ngaphambili, okwahlula izinto ezahlukeneyo apho kuphela isabelo esikwimo ethi “variable=value” isetyenziswa. Umzekelo, kumsebenzi othi "def (a, b, /, c, d, *, e, f):" iinguqu "a" kunye no "b" zingabelwa kuphela ngolandelelwano amaxabiso adweliswe kuwo. ,
    Izinto eziguquguqukayo “e” kunye “f”, kuphela ngesabelo “variable=value”, kunye notshintsho “c” kunye “d” ngayo nayiphi na kwezi ndlela zilandelayo:

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

  • Yongeziwe entsha C API
    ukuqwalasela iiparamitha zokuqalisa zePython, ukuvumela ulawulo olupheleleyo phezu kwayo yonke into uqwalaselo kunye nokubonelela ngezibonelelo zokuphatha iimpazamo. I-API ecetywayo yenza kube lula ukubethelela ukusebenza kwetoliki yePython kwezinye izicelo zeC;

  • Iphunyeziwe Iprothokholi entsha yeVectorcall yokufikelela ngokukhawuleza kwizinto ezibhalwe ngolwimi lwe-C. Kwi-CPython 3.8, ukufikelela kwi-Vectorcall kusakhawulelwe kusetyenziso lwangaphakathi, ukudluliselwa kwinqanaba le-APIs ezifumanekayo esidlangalaleni kucwangciswe kwi-CPython 3.9;
  • Yongeziwe iifowuni kwi-Runtime Audit Hooks, ebonelela ngezicelo kunye nezicwangciso kwiPython ngokufikelela kulwazi olusezantsi malunga nenkqubela phambili yeskripthi ukuphicotha izenzo ezenziweyo (umzekelo, unokulandelela ukungeniswa kweemodyuli, ukuvula iifayile, usebenzisa umkhondo, ukukhangela iimodyuli, iimodyuli zokuvula, ukusebenzisa umkhondo. ukufikelela kwiisokethi zenethiwekhi, ukuqhuba ikhowudi nge-exec, eval kunye ne-run_mod);
  • Kwimodyuli ithwali ikhuselekile inkxaso yeprothokholi yePickle 5, esetyenziselwa ukulinganisa kunye nokususa izinto. I-Pickle ikuvumela ukuba ukwandise ukugqithiswa kwedatha enkulu phakathi kweenkqubo zePython kwi-multi-core kunye ne-multi-node configuration ngokunciphisa inani lemisebenzi yokukopisha imemori kunye nokusebenzisa iindlela zokuphucula ezongezelelweyo ezifana nokusebenzisa idatha-specific compression algorithms. Inguqu yesihlanu yeprotocol iyaphawuleka ukongezwa kwendlela yokuhanjiswa kwe-out-of-band, apho idatha inokudluliselwa ngokwahlukileyo kwi-pickle stream enkulu.
  • Ngokungagqibekanga, inguqu yesine yeprotocol yePickle ivuliwe, leyo, xa kuthelekiswa nenguqulo yesithathu enikezelwa ngaphambili, ivumela ukusebenza okuphezulu kunye nokunciphisa ubungakanani bedatha edlulisiweyo;
  • Kwimodyuli ukuthayipha Ziliqela izinto ezintsha eziveziweyo:
    • I klasi TypedDict kuluhlu oludityanisiweyo apho ulwazi lohlobo luchazwe ngokucacileyo kwidatha ehambelana nezitshixo (“TypedDict(‘Point2D’, x=int, y=int, label=str)”).
    • Uhlobo Yokoqobo, ekuvumela ukuba unciphise iparamitha okanye ubuyisele ixabiso kumaxabiso achazwe kwangaphambili (“Literal[‘iqhagamshelwe’, ‘iqhawulwe’]”).
    • Ulwakhiwo "Final", eyenza kube lula ukuchaza ixabiso lezinto eziguquguqukayo, imisebenzi, iindlela kunye neeklasi ezingenako ukutshintshwa okanye ukunikezelwa kwakhona ("pi: Final[float] = 3.1415926536").
  • Kongezwe amandla okunika i-cache yeefayile ezihlanganisiweyo nge-bytecode, zigcinwe kumthi owahlukileyo weFS kwaye zahlulwe kubalawuli abanekhowudi. Umendo wokugcina iifayile nge-bytecode usetelwe ngokuguquguquka PYTHONPYCACHEPREFIX okanye ukhetho "-X pycache_prefix";
  • Iphunyeziwe ukukwazi ukwenza i-debug builds yePython esebenzisa i-ABI efana nokukhululwa, ekuvumela ukuba ulayishe izandiso ezibhalwe ngolwimi lwe-SI, eziqulunqwe ukukhutshwa okuzinzileyo, kwi-debug builds;
  • Imitya ka-f (imibhalo yamagama efomathiweyo ne prefixed ngo 'f') ibonelela ngenkxaso kumsebenzisi = (umzekelo, "f'{expr=}'"), ekuvumela ukuba uguqule imbonakalo yokubhaliweyo ukuze kube lula ukulungisa ingxaki. Umzekelo:

    ››› umsebenzisi = 'eric_idle'
    ››› ilungu_ukususela = umhla (1975, 7, 31)
    ››› f'{umsebenzisi=} {ilungu_ukususela=}'
    “umsebenzisi=’eric_idle’ member_since=datetime.date(1975, 7, 31)”

  • Inkcazo "uyaqhubeka» Ivumelekile ukuba isetyenziswe ngaphakathi kwebhloko ekugcineni;
  • Imodyuli entsha yongeziwe multiprocessing.shared_memory, ivumela ukusetyenziswa kwamacandelo ememori ekwabelwana ngayo kuqwalaselo lwe-multiprocess;
  • Kwiplatifomu yeWindows, ukuphunyezwa kwe-asyncio kuhanjiswe ukusebenzisa iklasi ProactorEventLoop;
  • Ukusebenza komyalelo we-LOAD_GLOBAL wonyuswe malunga ne-40% ngenxa yosetyenziso lwendlela entsha yekhowudi yekhowudi yesixhobo.

umthombo: opennet.ru

Yongeza izimvo