Guido van Rossum
Noua implementare seamănă mult cu operatorul „potrivire” furnizat în Scala, Rust și F#, care compară rezultatul unei expresii specificate cu o listă de modele listate în blocuri bazate pe operatorul „caz”. Spre deosebire de operatorul „comutator” disponibil în C, Java și JavaScript, expresiile bazate pe „potrivire” oferă mult mai multe
def http_error(stare):
starea meciului:
caz 400:
returnează „Cerere greșită”
cazul 401|403|404:
returnează „Nu este permis”
caz 418:
returnează „Sunt un ceainic”
caz_:
returnează „Altceva”
De exemplu, puteți despacheta obiecte, tupluri, liste și secvențe arbitrare pentru a lega variabile pe baza valorilor existente. Este permisă definirea șabloanelor imbricate, utilizarea condițiilor suplimentare „dacă” în șablon, utilizarea măștilor („[x, y, *rest]”), mapări cheie/valoare (de exemplu, {„bandwidth”: b, „latency” ”: l} pentru a extrage valorile „lățime de bandă” și „latență” și dicționar), extrageți subșabloane ("operator:="), utilizați constante numite în șablon. În clase, este posibil să personalizați comportamentul de potrivire folosind metoda „__match__()”.
din clasele de date importați clasa de date
@dataclass
Punct de clasa:
x:int
y:int
def whereis(punct):
Punct de meci:
caz Punct(0, 0):
print("Origine")
caz Punct(0, y):
print(f"Y={y}")
caz Punct(x, 0):
print(f"X={x}")
case Point():
print("Undeva altundeva")
caz_:
print("Nu este un punct")
Punct de meci:
caz Punct(x, y) dacă x == y:
print(f"Y=X la {x}")
caz Punct(x, y):
print(f"Nu pe diagonală")
ROȘU, VERDE, ALBASTRU = 0, 1, 2
se potrivește cu culoarea:
caz .RED:
print("Văd roșu!")
caz .VERDE:
print("Iarba este verde")
caz .BLU
E:
print(„Simt blues :(“)
Un set a fost pregătit pentru revizuire
Sursa: opennet.ru