Guido van Rossum
Nova implementacija umnogome je slična "match" operatoru danom u Scali, Rustu i F#, koji uspoređuje rezultat određenog izraza s popisom uzoraka navedenih u blokovima na temelju "case" operatora. Za razliku od operatora "switch" dostupnog u C-u, Javi i JavaScriptu, izrazi temeljeni na "podudaranju" nude mnogo više
def http_greška(status):
status podudaranja:
slučaj 400:
vrati "Loš zahtjev"
slučaj 401|403|404:
vrati "Nije dopušteno"
slučaj 418:
vrati "Ja sam čajnik"
slučaj_:
vrati "Nešto drugo"
Na primjer, možete raspakirati objekte, torke, popise i proizvoljne nizove za vezanje varijabli na temelju postojećih vrijednosti. Dopušteno je definirati ugniježđene predloške, koristiti dodatne "if" uvjete u predlošku, koristiti maske ("[x, y, *rest]"), mapiranja ključ/vrijednost (na primjer, {"bandwidth": b, "latency ”: l} za izdvajanje vrijednosti i rječnika "propusnost" i "latencija", izdvajanje podpredložaka (":=" operator), korištenje imenovanih konstanti u predlošku. U razredima je moguće prilagoditi ponašanje podudaranja pomoću metode “__match__()”.
iz klasa podataka uvoz klase podataka
@dataclass
klasa bodova:
x:int
y:int
def gdje je (točka):
meč lopta:
case Point(0, 0):
ispis("Porijeklo")
case Point(0, y):
ispis(f"Y={y}")
case Point(x, 0):
ispis(f"X={x}")
case Point():
print("Negdje drugdje")
slučaj_:
print("Nije točka")
meč lopta:
case Point(x, y) if x == y:
print(f"Y=X na {x}")
Case Point(x, y):
print(f"Ne na dijagonali")
CRVENA, ZELENA, PLAVA = 0, 1, 2
odgovara boji:
slučaj .CRVENO:
print("Vidim crveno!")
slučaj .ZELENO:
print("Trava je zelena")
slučaj .BLU
E:
print(“Osjećam blues :(“)
Pripremljen je set za recenziju
Izvor: opennet.ru