Programmēšana

Python var iegūt modeļa atbilstības sintaksi

Python valodas veidotāji izdomā jaunu priekšlikumu PEP 622, kas beidzot parādītu Python parauga atbilstības paziņojuma sintaksi. Jaunie modeļu atbilstības paziņojumi sniegtu Python programmētājiem izteiksmīgākus veidus, kā apstrādāt strukturētus datus, neizmantojot risinājumus.

Rakstu atbilstība ir kopīga iezīme daudzās programmēšanas valodās, piemēram, slēdzis / korpuss C. Tas ļauj veikt vienu no vairākām iespējamām darbībām, pamatojoties uz noteiktā mainīgā vai izteiksmes vērtību. Kaut arī Python trūkst dabiskās sintakses modeļu saskaņošanai, to ir bijis iespējams atdarinātja / elif / cits ķēdes vai vārdnīcas uzmeklēšana.

PEP 622 piedāvā metodi izteiksmes saskaņošanai ar vairāku veidu modeļiem, izmantojot a sērkociņš / lieta sintakse:

kaut ko saskaņot: gadījums 0 | 1 | 2: drukas ("Mazs skaits") korpuss [] | [_]: drukas ("Īsa secība") burts str () | baiti (): print ("Kaut kas līdzīgs virknei") gadījums _: print ("Kaut kas cits")

Atbalstītie modeļu atbilstības veidi ietver literārus vārdus, nemainīgas vērtības, secības, kartēšanu (būtībā atslēgas-vērtību pāra klātbūtni izteiksmē), klasi, iepriekš minēto maisījumu vai jebkuru no šiem plus nosacītajiem izteicieniem. Jebkuras spēles, kas ir neskaidras vai nav iespējams atrisināt, izpildes laikā radīs izņēmumu.

Objekti var apstrādāt spēles testus, izmantojot jaunu protokolu ar nosaukumu __match__ protokols. Ja objekts īsteno __match__ metodi, to var izmantot, lai pārbaudītu, vai tas atbilst noteiktajam klases paraugam, un atgrieztu atbilstošu atbildi.

PEP 622 arī ļautu statiskā tipa pārbaudītājiem pārbaudīt, vai ir iespējams pārbaudīt sakritības. Jauns @sealed klases dekorators tipa pārbaudītājiem norāda, ka jebkura attiecīgās klases apakšklase ir definēta tajā pašā modulī kā bāzes klase.

Iepriekšējie PEP, lai pievienotu modeļu atbilstību - PEP 275 un PEP 3103, kas ierosināti attiecīgi 2001. un 2006. gadā, tika noraidīti, jo trūka tautas atbalsta. Programmas PEP 3103 projektu izstrādāja Python izveidotājs Gvido van Rosums. Jaunā PEP, kuras autors ir van Rossums un vairāki citi, mērķis ir nodrošināt regulāras izteiksmes objektu saskaņošanai, nevis tikai vienkāršu ja / elif / cits aizstājējs. Autori atzīmē, ka daudzus šī PEP aspektus iedvesmoja tas, kā modeļu saskaņošana darbojas Rust un Scala.

Par to, kā tas viss tiktu īstenots zem pārsega, joprojām ir diskusijas. PEP 622 piedāvātā ieviešana radītu tādas pašas baitkoda sekvences kā ja / elif / cits ķēde. Lielāks slēdzis / korpuss bloki varētu kļūt mazāk izpildāmi atkarībā no tā, cik daudz nosacītās loģikas bija iekļauts katrā gadījumā. Bet PEP skaidri norāda, ka jebkurš pieeju un veiktspējas optimizācijas (piemēram, piezīmju) skaits joprojām ir uz galda.

Pat ja PEP tiks pieņemts, daudz kas par to varētu mainīties. Viens jautājums, kas, iespējams, tiks apstrīdēts, ir gadījums _: tā vietā cits: kā galīgā visaptverošā klauzulaslēdzis paziņojums, apgalvojums._ tiek izmantots kā pagaidu mainīgais daudzos kontekstos, un tā vienpusēja ignorēšana var būt izstrādātāju izslēgšana.

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