Guido van Rossum
A nova implementazione hè assai cum'è l'operatore "match" furnitu in Scala, Rust è F#, chì compara u risultatu di una espressione specifica cù una lista di mudelli listati in blocchi basatu annantu à l'operatore "casu". A cuntrariu di l'operatore "switch" dispunibule in C, Java è JavaScript, l'espressioni basate in "match" offrenu assai più
def http_error(status):
status di partita:
casu 400:
turnà "Domanda cattiva"
casu 401|403|404:
vultà "Micca permessu"
casu 418:
torna "Sò una teiera"
casu_:
torna "Qualcosa d'altru"
Per esempiu, pudete unpack objects, tuples, listi, è sequenze arbitrarie per ligà variabili basati nantu à i valori esistenti. Hè permessu di definisce mudelli nidificati, aduprate cundizioni supplementari "se" in u mudellu, utilizate maschere ("[x, y, *rest]"), mappings chjave / valore (per esempiu, {"larghezza di banda": b, "latency". ”: l} per estrattà i valori di "larghezza di banda" è "latenza" è u dizziunariu), estrae i sottotemplate (":=" operatore), utilizate custanti chjamati in u mudellu. In e classi, hè pussibule persunalizà u cumportamentu currispondente cù u metudu "__match__()".
da classi di dati importa classi di dati
@dataclass
Puntu di classa:
x:int
y:int
def whereis (puntu):
match point:
Puntu di casu (0, 0):
print("Origine")
Puntu di casu (0, y):
print(f"Y={y}")
Puntu di casu (x, 0):
print(f"X={x}")
Case Point():
print("In un altru locu")
casu_:
print ("Micca un puntu")
match point:
casu Puntu (x, y) se x == y:
print(f"Y=X à {x}")
Puntu di casu (x, y):
print(f"Micca nantu à a diagonale")
RED, VERDE, BLU = 0, 1, 2
currisponde à u culore:
casu .RED:
print ("Vecu rossu!")
casu .VERDE :
print("L'erba hè verde")
casu .BLU
E:
print("Senti u blues :(“)
Un set hè statu preparatu per rivisione
Source: opennet.ru