Guido van Rossum
Ang bag-ong pagpatuman sama ra sa operator nga "match" nga gihatag sa Scala, Rust, ug F#, nga nagtandi sa resulta sa usa ka espesipikong ekspresyon sa usa ka lista sa mga pattern nga gilista sa mga bloke base sa "case" operator. Dili sama sa "switch" nga operator nga anaa sa C, Java, ug JavaScript, ang "match"-based nga mga ekspresyon nagtanyag og daghan pa.
def http_error(status):
kahimtang sa duwa:
kaso 400:
ibalik ang "Bad request"
kaso 401|403|404:
balik "Dili gitugotan"
kaso 418:
balik "Ako usa ka teapot"
kaso_:
ibalik ang "Laing butang"
Pananglitan, mahimo nimong i-unpack ang mga butang, tuple, lista, ug arbitraryong mga han-ay aron mabugkos ang mga variable base sa naa na nga mga kantidad. Gitugotan ang paghubit sa mga nested templates, paggamit ug dugang nga “kon” nga kondisyon sa template, paggamit og mga maskara (“[x, y, *rest]”), key/value mappings (pananglitan, {“bandwidth”: b, “latency ”: l} aron makuha ang "bandwidth" ug "latency" nga mga kantidad ug diksyonaryo), kuhaa ang mga subtemplates (":=" operator), gamita ang ginganlan nga mga constant sa template. Sa mga klase, posible nga ipasibo ang pagkaparehas nga pamatasan gamit ang "__match__()" nga pamaagi.
gikan sa dataclasses import dataclass
@dataclass
Punto sa klase:
x: int
y: int
def whereis(punto):
match point:
punto sa kaso(0, 0):
print("Gigikanan")
punto sa kaso(0, y):
print(f"Y={y}")
punto sa kaso(x, 0):
print(f"X={x}")
punto sa kaso ():
print ("Sa laing dapit")
kaso_:
print ("Dili usa ka punto")
match point:
case Point(x, y) kung x == y:
print(f"Y=X sa {x}")
punto sa kaso(x, y):
print(f"Wala sa diagonal")
PULA, BERDE, Asul = 0, 1, 2
tugma nga kolor:
kaso .PULANG:
print("Nakita nako ang pula!")
kaso .BERDE:
print("Ang sagbot berde")
kaso .BLU
E:
print("Gibati nako ang mga blues :(")
Usa ka set ang giandam alang sa pagrepaso
Source: opennet.ru