Guido van Rossum
Nova izvedba je zelo podobna operatorju »ujemanja« v Scali, Rustu in F#, ki primerja rezultat določenega izraza s seznamom vzorcev, navedenih v blokih, na podlagi operatorja »case«. Za razliko od operatorja "switch", ki je na voljo v C, Javi in JavaScriptu, izrazi, ki temeljijo na "ujemanju", ponujajo veliko več
def http_error(status):
stanje ujemanja:
primer 400:
vrni "Slaba zahteva"
primer 401|403|404:
vrni "Ni dovoljeno"
primer 418:
vrni "Jaz sem čajnik"
Ovitek_:
vrni "Nekaj drugega"
Na primer, lahko razpakirate predmete, tuple, sezname in poljubna zaporedja, da povežete spremenljivke na podlagi obstoječih vrednosti. Dovoljeno je definirati ugnezdene predloge, uporabiti dodatne pogoje »če« v predlogi, uporabiti maske (»[x, y, *rest]«), preslikave ključ/vrednost (na primer {»pasovna širina«: b, »zakasnitev ”: l} za ekstrahiranje vrednosti in slovarja za "pasovno širino" in "zakasnitev", ekstrahiranje podpredlog (operator":="), uporaba imenovanih konstant v predlogi. V razredih je mogoče prilagoditi vedenje ujemanja z uporabo metode »__match__()«.
iz podatkovnih razredov uvozi podatkovni razred
@dataclass
točka razreda:
x:int
y:int
def whereis(točka):
točka srečanja:
case Point(0, 0):
print("Izvor")
case Point(0, y):
print(f"Y={y}")
case Point(x, 0):
natisni(f"X={x}")
case Point():
print("Nekje drugje")
Ovitek_:
print("Ni točka")
točka srečanja:
case Point(x, y), če je x == y:
print(f"Y=X pri {x}")
Case Point(x, y):
print(f"Ne na diagonali")
RDEČA, ZELENA, MODRA = 0, 1, 2
ujemaj barvo:
etui .RED:
print("Vidim rdeče!")
ohišje .ZELENO:
print("Trava je zelena")
etui .BLU
E:
print(“Čutim blues :(“)
Za pregled je pripravljen komplet
Vir: opennet.ru