Guido van Rossum
Zbatimi i ri është shumë i ngjashëm me operatorin "match" të ofruar në Scala, Rust dhe F#, i cili krahason rezultatin e një shprehjeje të specifikuar me një listë modelesh të listuara në blloqe bazuar në operatorin "rast". Ndryshe nga operatori "switch" i disponueshëm në C, Java dhe JavaScript, shprehjet e bazuara në "match" ofrojnë shumë më tepër
def http_error(status):
statusi i ndeshjes:
rasti 400:
kthej "kërkesë e keqe"
rasti 401|403|404:
kthehu "Nuk lejohet"
rasti 418:
kthehu "Unë jam një çajnik"
rast_:
kthej "Diçka tjetër"
Për shembull, mund të shpaketoni objekte, tuple, lista dhe sekuenca arbitrare për të lidhur variabla bazuar në vlerat ekzistuese. Lejohet të përcaktohen shabllone të ndërthurur, të përdoren kushte shtesë "nëse" në shabllon, përdorimi i maskave ("[x, y, *rest]"), pasqyrimet e çelësave/vlerave (për shembull, {"gjerësia e brezit": b, "latenca ”: l} për të nxjerrë vlerat dhe fjalorin e "gjerësisë së brezit" dhe "latencës", nxjerr nën-shabllonet (":=" operatori), përdorni konstante të emërtuara në shabllon. Në klasa, është e mundur të personalizoni sjelljen e përputhjes duke përdorur metodën "__match__()".
nga klasa e të dhënave importon klasën e të dhënave
@dataclass
Pika e klasës:
x:int
y:int
defini ku është (pika):
pika e ndeshjes:
rasti Pika (0, 0):
print ("Origjina")
rasti Pika (0, y):
print(f"Y={y}")
rasti Pika (x, 0):
print(f"X={x}")
case Point():
print ("Diku tjetër")
rast_:
print ("Asnjë pikë")
pika e ndeshjes:
rasti Pika (x, y) nëse x == y:
print (f"Y=X në {x}")
rasti Pika (x, y):
print (f"Jo në diagonale")
E KUQE, E GJELBËR, BLU = 0, 1, 2
ngjyra e ndeshjes:
rasti .KUQ:
print ("Unë shoh të kuqe!")
rasti .E GJELBËR:
print ("Bari është jeshil")
rasti .BLU
E:
print ("Po ndjej bluesin :(")
Një grup është përgatitur për shqyrtim
Burimi: opennet.ru