Guido van Rossum
Uusi toteutus muistuttaa paljolti Scalassa, Rustissa ja F#:ssa tarjottua "match"-operaattoria, joka vertaa määritetyn lausekkeen tulosta "case"-operaattorin perusteella lohkoittain lueteltuun malliluetteloon. Toisin kuin C-, Java- ja JavaScript-kielissä käytettävissä oleva "switch"-operaattori, "match"-pohjaiset lausekkeet tarjoavat paljon enemmän
def http_error(status):
ottelun tila:
tapaus 400:
palauttaa "huono pyyntö"
tapaus 401|403|404:
palauttaa "Ei sallittu"
tapaus 418:
palauta "Olen teekannu"
case_:
palauttaa "jotain muuta"
Voit esimerkiksi purkaa objektit, monikot, luettelot ja mielivaltaiset sekvenssit sitoaksesi muuttujia olemassa olevien arvojen perusteella. On sallittua määrittää sisäkkäisiä malleja, käyttää "jos"-lisäehtoja mallissa, käyttää maskeja ("[x, y, *rest]"), avain/arvo-määrityksiä (esim. {"kaistanleveys": b, "latenssi" ”: l} poimia "kaistanleveys" ja "latenssi"-arvot ja sanakirja, purkaa alimalleja (":="-operaattori), käytä nimettyjä vakioita mallissa. Luokissa on mahdollista mukauttaa täsmäytyskäyttäytymistä "__match__()" -menetelmällä.
dataluokista tuo dataluokka
@dataclass
luokan piste:
x:int
y:int
def whereis(piste):
ottelupallo:
tapauskohta(0, 0):
tulosta ("Alkuperä")
tapauskohta(0, y):
tulosta (f"Y={y}")
tapauskohta(x, 0):
tulosta (f"X={x}")
tapauskohta():
tulosta ("Jossain muualla")
case_:
print ("Ei ole järkeä")
ottelupallo:
tapauskohta(x, y), jos x == y:
print(f"Y=X klo {x}")
tapauskohta(x, y):
print(f"Ei diagonaalissa")
PUNAINEN, VIHREÄ, SININEN = 0, 1, 2
vastaava väri:
kotelo .PUNAINEN:
tulosta ("Näen punaista!")
kotelo .GREEN:
print ("Ruoho on vihreää")
kotelo .BLU
E:
print("Minä tunnen bluesia :(")
Sarja on valmisteltu tarkistettavaksi
Lähde: opennet.ru