Programavimas

„Python“ gali gauti modelio atitikimo sintaksę

„Python“ kalbos kūrėjai svarsto naują pasiūlymą „PEP 622“, kuris pagaliau atneštų „Python“ modelio atitikimo sakinių sintaksę. Nauji modelių atitikimo teiginiai suteiktų „Python“ programuotojams išraiškingesnius būdus tvarkyti struktūrizuotus duomenis, nereikalaujant apeiti.

Rašto derinimas yra įprastas daugelio programavimo kalbų, pvz., Bruožas jungiklis / dėklas C. Tai leidžia atlikti vieną iš daugelio galimų veiksmų, atsižvelgiant į tam tikro kintamojo ar išraiškos vertę. Nors „Python“ trūko natūralios sintaksės, kad būtų galima suderinti šablonus, buvo įmanoma ją mėgdžiotijei / elifas / dar tinklų ar žodyno paiešką.

PEP 622 siūlo metodą, kaip išraišką suderinti su daugeliu modelių rūšių, naudojant a degtukas / byla sintaksė:

kažką atitikti: atvejis 0 | 1 | 2: spausdinimo („Mažas skaičius“) dėklas [] | [_]: spausdinti („Trumpa seka“) atvejis str () | baitai (): print („Kažkas panašus į eilutę“) atvejis _: print („Kažkas kitas“)

Palaikomus šablonų atitikties tipus sudaro literalai, pavadinimai, pastovios reikšmės, sekos, susiejimas (iš esmės raktų ir reikšmių poros buvimas išraiškoje), klasė, aukščiau paminėtų elementų mišinys arba bet kuri iš šių ir sąlyginių išraiškų. Bet kokios dviprasmiškos ar neįmanoma išspręsti rungtynių vykdymo metu bus išimtis.

Objektai gali atlikti atitikties testus naudodami naują protokolą, vadinamą __match__ protokolas. Jei objektas įgyvendina __match__ metodas, jis gali būti naudojamas norint patikrinti, ar jis atitinka nurodytą klasės modelį, ir pateikti tinkamą atsakymą.

PEP 622 taip pat leistų statinio tipo tikrintojams patikrinti, ar galima patikrinti atitiktis. Naujas @sealed klasės dekoratorius tipo tikrintojams nurodo, kad bet kuris nagrinėjamos klasės poklasis yra apibrėžtas tame pačiame modulyje kaip ir pagrindinė klasė.

Ankstesni PEP, kad būtų galima pridėti modelių derinimą - PEP 275 ir PEP 3103, pasiūlyti atitinkamai 2001 ir 2006 m., Buvo atmesti dėl to, kad nebuvo populiarios paramos. PEP 3103 parengė „Python“ kūrėjas Guido van Rossumas. Naujojo PEP, kurio autorius yra van Rossumas ir keletas kitų, tikslas yra pateikti paprastas objekto derinimo išraiškas, o ne tik paprastą jei / elifas / dar pakaitalas. Autoriai pažymi, kad daugelį šio PEP aspektų įkvėpė tai, kaip modelių derinimas veikia „Rust“ ir „Scala“.

Kaip visa tai būtų įgyvendinta po gaubtu, vis dar kyla diskusijų. Siūlomas PEP 622 diegimas generuotų tas pačias baitų kodus kaip jei / elifas / dar grandinė. Didesnis jungiklis / dėklas blokai galėtų tapti mažiau efektyvūs, priklausomai nuo to, kiek sąlyginės logikos buvo įtraukta į kiekvieną atveju. Tačiau PEP aiškiai rodo, kad vis dar yra daugybė metodų ir efektyvumo optimizavimo (pvz., Atmintinės).

Net jei PEP bus priimta, daug kas gali pasikeisti. Vienas klausimas, kuris greičiausiai bus ginčijamas, yra atvejis _: vietoj Kitas: kaip paskutinė visuotinės sąlygosperjungti pareiškimas._ yra naudojamas kaip laikinas kintamasis daugelyje kontekstų, o jo elgesio nepaisymas vienašališkai gali būti kūrėjų atjungimas.

$config[zx-auto] not found$config[zx-overlay] not found