Kutulutsidwa kwa chilankhulo cha pulogalamu ya Python 3.10

Pambuyo pa chaka cha chitukuko, kutulutsidwa kwakukulu kwa chinenero cha Python 3.10 kumaperekedwa. Nthambi yatsopanoyi idzathandizidwa kwa chaka chimodzi ndi theka, pambuyo pake kwa zaka zina zitatu ndi theka, zokonzekera zidzapangidwa kuti zithetse zovuta.

Nthawi yomweyo, kuyesa kwa alpha kwa nthambi ya Python 3.11 kudayamba (molingana ndi ndandanda yatsopano yachitukuko, ntchito panthambi yatsopano imayamba miyezi isanu isanatulutse nthambi yapitayi ndikufikira gawo loyesa alpha pofika nthawi yotulutsidwa kotsatira. ). Nthambi ya Python 3.11 idzakhala ikutulutsidwa kwa alpha kwa miyezi isanu ndi iwiri, pomwe zatsopano zidzawonjezedwa ndikukhazikika. Pambuyo pake, mitundu ya beta idzayesedwa kwa miyezi itatu, pomwe kuwonjezera zatsopano kudzaletsedwa ndipo chidwi chonse chidzaperekedwa pakukonza zolakwika. Kwa miyezi iwiri yapitayi kuti amasulidwe, nthambiyi idzakhala itatsala pang’ono kumasulidwa, ndipo padzakhala kukhazikika komaliza.

Zowonjezera zatsopano ku Python 3.10 zikuphatikiza:

  • Kukhazikitsa "match" ndi "case" ogwiritsira ntchito pofananiza, zomwe zimapangitsa kuti ma code awerengeke, kuphweka kufananitsa zinthu za Python mosagwirizana, ndikuwonjezera kudalirika kwa ma code kudzera pakuwunika kwamtundu wa static. Kukhazikitsa kuli ngati wogwiritsa ntchito "machesi" woperekedwa ku Scala, Rust, ndi F #, yemwe amafanizira zotsatira za mawu otchulidwa ndi mndandanda wazomwe zalembedwa mu midadada kutengera wogwiritsa ntchito "case".

    def http_error(status): mawonekedwe ofananira: mlandu 400: bwezerani "Pempho loyipa" 401|403|404: bweretsani "Zosaloledwa" mlandu 418: bweretsani "Ndine teapot" mlandu _: bweretsani "Chinachake"

    Mutha kumasula zinthu, ma tuples, mindandanda, ndi zotsatizana zosasinthika kuti mumange zosinthika kutengera zomwe zilipo kale. Zimaloledwa kufotokozera ma templates okhala ndi zisa, kugwiritsa ntchito zina zowonjezera "ngati" mu template, gwiritsani ntchito masks ("[x, y, * rest]"), makiyi / mtengo wa mapu (mwachitsanzo, {"bandwidth": b, "latency ”: l} kuti muchotse "bandwidth" ndi "latency" kuchokera mudikishonale), chotsani ma subtemplates (":=" woyendetsa), gwiritsani ntchito zilembo zotchulidwa mu template. M'makalasi, ndizotheka kusintha machitidwe ofananira pogwiritsa ntchito njira ya "__match___()".

    kuchokera ku dataclass import dataclass @dataclass class Point: x: int y: int def whereis(point): match point: case Point(0, 0): print("Origin") case Point(0, y): print(f" Y={y}") nkhani (x, 0): kusindikiza(f"X={x}") nkhani Mfundo(): sindikizani("Penapake") chofanana _: sindikizani("Palibe mfundo") zofanana mfundo: nkhani Point(x, y) ngati x == y: sindikizani(f"Y=X pa {x}") nkhani Point(x, y): sindikizani(f"Osati pa diagonal") RED, GREEN, BLUE = 0, 1, 2 mtundu wa machesi: nkhani YOFIIRA: sindikiza (“Ndikuwona chofiyira!”) chopopera GREEN: sindikiza(“Udzu ndi wobiriŵira”) chokopa BLUE: sindikiza(“Ndikumva zowawa :(“)

  • Tsopano ndi kotheka kugwiritsa ntchito mabatani mu mawu omwe ali ndi mawu kuti mugawanitse tanthauzo la owongolera zochitika pamizere ingapo. Zimaloledwanso kusiya koma pambuyo pa woyang'anira nkhani yomaliza mu gulu: ndi ( CtxManager1() monga chitsanzo1, CtxManager2() monga chitsanzo2, CtxManager3() monga chitsanzo3, ): ...
  • Kupititsa patsogolo malipoti a malo olakwika okhudzana ndi zingwe zosatsekedwa ndi mawu ogwidwa mu zingwe zenizeni. Mwachitsanzo, pakakhala cholumikizira chosatsekedwa, m'malo mofotokoza cholakwika cha syntax pamamangidwe otsatirawa, cholozera tsopano chikuwonetsa cholumikizira chotsegulira ndikuwonetsa kuti palibe chipika chotseka. Fayilo "example.py", mzere 1 ukuyembekezeka = {9:1, 18:2, 19:2, 27:3, 28:3, 29:3, 36:4, 37:4, ^SyntaxError: '{' sichinatsekedwe konse

    Onjezani mauthenga olakwika ophatikizika apadera: kusowa ":" chizindikiro pamaso pa block ndi m'madikishonale, osalekanitsa tuple ndi mabulashi, kusowa koma pamndandanda, kutchula chipika cha "yesani" popanda "kupatula" ndi "pomaliza", pogwiritsa ntchito "= " m'malo mwa "= =" poyerekezera, kutchula * -mawu mu zingwe za f. Kuphatikiza apo, zimawonetsetsa kuti mawu onse ovuta awonetsedwa, osati kungoyambira chabe, komanso chidziwitso chomveka bwino chokhudza zolakwika zomwe zimagwirizanitsidwa ndi indentation yolakwika. >>> def foo(): ... ngati lel: ... x = 2 Fayilo " ", mzere 3 x = 2 ^ IndentationError: kuyembekezera chipika cholowera pambuyo pa mawu akuti 'ngati' pamzere 2

    Pazolakwa zoyambitsidwa ndi typos m'maina a mawonekedwe ndi mayina osinthika mu ntchito, malingaliro okhala ndi dzina lolondola amatuluka. >>>collections.namedtoplo Traceback (kuyimba kwaposachedwa komaliza): Fayilo « ", mzere 1, mu AttributeError: module 'collections' ilibe chizindikiro cha 'namedtoplo'. Mukutanthauza: dzinatuple?

  • Pazida zochotsera zolakwika ndi ma profiler, zochitika zotsatizana zimaperekedwa ndi manambala enieni a ma code omwe adaphedwa.
  • Onjezani zosintha za sys.flags.warn_default_encoding kuti muwonetse chenjezo lokhudza zolakwika zomwe zingagwirizane ndi TextIOWrapper ndi kutsegula () kukonza mafayilo osungidwa a UTF-8 popanda kufotokoza mwatsatanetsatane njira ya 'encoding=»utf-8″' (ASCII encoding imagwiritsidwa ntchito mwachisawawa) . Kutulutsa kwatsopano kumaperekanso mwayi wofotokozera mtengo wa 'encoding="locale"' kuti muyike kabisidwe kutengera komwe kuli komweko.
  • Wogwiritsa ntchito watsopano wawonjezedwa ku gawo lolemba, lomwe limapereka zida zofotokozera tanthauzo lamtundu, kulola kugwiritsa ntchito mawu akuti "X | Y" kuti musankhe mtundu umodzi (mtundu wa X kapena mtundu wa Y). def square (nambala: int | float) -> int | zoyandama: nambala yobwezera ** 2 ikufanana ndi zomangamanga zomwe zidathandizidwa kale: def square(nambala: Union[int, float]) -> Union[int, float]: kubwerera nambala ** 2
  • Wogwiritsa ntchito Concatenate ndi ParamSpec variable awonjezedwa ku typing module, zomwe zimakulolani kuti mudutse zina zowonjezera kuti mufufuze mtundu wa static mukamagwiritsa ntchito Callable. Gawo lolembera limawonjezeranso zofunikira za TypeGuard kuti zifotokozere ntchito zachitetezo chamtundu ndi TypeAlias ​​​​kutanthauzira momveka bwino mtundu wamtundu. StrCache: TypeAlias ​​= 'Cache[str]' # mtundu wina
  • Ntchito ya zip () imagwiritsa ntchito mbendera "yokhwima", yomwe, ikatchulidwa, imayang'ana ngati zotsutsana zomwe zikubwerezedwa ndizofanana. >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2) , ('c', 3)] >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True)) Traceback (kuimba kwaposachedwa kwambiri komaliza ): … ValueError: zip() mkangano 2 ndi wautali kuposa mkangano 1
  • Ntchito zatsopano zomangidwa aiter() ndi anext() zikuperekedwa ndikukhazikitsa ma analogue asynchronous ku ntchito iter() ndi yotsatira().
  • Ntchito ya omanga str (), ma byte () ndi bytearray () omanga akamagwira ntchito ndi zinthu zazing'ono yawonjezeka ndi 30-40%.
  • Anachepetsa kuchuluka kwa ntchito zolowetsa mu runpy module. Lamulo la "python3 -m module_name" tsopano likuyenda mwachangu nthawi 1.4 chifukwa chakuchepetsa kwa ma module omwe adatumizidwa kunja kuchokera ku 69 mpaka 51.
  • Malangizo a LOAD_ATTR amagwiritsa ntchito makina osungira ma opcode pawokha, zomwe zidapangitsa kuti zitheke kufulumizitsa ntchito ndi mawonekedwe anthawi zonse mpaka 36%, komanso mipata mpaka 44%.
  • Mukamanga Python ndi "--enable-optimizations", njira ya "-fno-semantic-interposition" tsopano yayatsidwa, yomwe imalola kufulumizitsa womasulira mpaka 30% poyerekeza ndi kumanga ndi "--enable-shared." ” mwina.
  • Ma module a hahlib ndi ssl awonjezera chithandizo cha OpenSSL 3.0.0 ndipo anasiya kuthandizira mitundu ya OpenSSL yakale kuposa 1.1.1.
  • Choyimira chakale chachotsedwa, chomwe chinasinthidwa munthambi yapitayi ndi PEG (Parsing Expression Grammar) parser. Module ya fomati yachotsedwa. Loop parameter yachotsedwa mu asyncio API. Njira zomwe zidasiyidwa kale zachotsedwa. Ntchito za Py_UNICODE_str* zomwe zimasinthira Py_UNICODE* zingwe zachotsedwa.
  • Module ya distutils yachotsedwa ndipo ikukonzekera kuchotsedwa mu Python 3.12. M'malo mwa distutils, tikulimbikitsidwa kugwiritsa ntchito ma setuptools, ma CD, nsanja, shutil, subprocess ndi sysconfig modules. Kapangidwe ka wstr ku PyUnicodeObject kwatsitsidwa ndikukonzedwa kuti kuchotsedwe.

Source: opennet.ru

Kuwonjezera ndemanga