Guido van Rossum
La nova efektivigo estas tre kiel la "matĉa" funkciigisto provizita en Scala, Rust, kaj F#, kiu komparas la rezulton de specifita esprimo kun listo de ŝablonoj listigitaj en blokoj bazitaj sur la "kaza" funkciigisto. Male al la "ŝaltilo" funkciigisto disponebla en C, Java kaj JavaScript, "matĉaj"-bazitaj esprimoj ofertas multe pli
def http_eraro(stato):
kongrua stato:
kazo 400:
revenu "Malbona peto"
kazo 401|403|404:
reveni "Ne permesite"
kazo 418:
return "Mi estas tekruĉo"
kazo_:
resendi "Ion alian"
Ekzemple, vi povas malpaki objektojn, opoj, listojn kaj arbitrajn sekvencojn por ligi variablojn bazitajn sur ekzistantaj valoroj. Estas permesite difini nestitajn ŝablonojn, uzi pliajn "se" kondiĉojn en la ŝablono, uzi maskojn ("[x, y, *rest]"), ŝlosil/valorajn mapadojn (ekzemple, {"bandwidth": b, "latency" ”: l} por ĉerpi "bendolarĝon" kaj "latenteco" valorojn kaj vortaron), ĉerpi subŝablonojn (":=" operatoro), uzu nomitajn konstantojn en ŝablono. En klasoj, eblas personecigi kongruan konduton uzante la metodon "__match__()".
el datumklasoj importu datumklason
@dataclass
klasa Punkto:
x:int
y:int
def whereis(punkto):
matĉopunkto:
kazo Punkto (0, 0):
print("Origino")
kazo Punkto(0, y):
print(f"Y={y}")
kazo Punkto (x, 0):
print(f"X={x}")
kazo Punkto():
print("Ie aliloke")
kazo_:
print ("Ne punkto")
matĉopunkto:
kazo Punkto(x, y) se x == y:
print(f"Y=X ĉe {x}")
kazo Punkto (x, y):
print(f"Ne sur la diagonalo")
RUĜA, VERDA, BLUA = 0, 1, 2
kongrua koloro:
kazo .RED:
print("Mi vidas ruĝan!")
kazo .VERDA:
print("Herbo estas verda")
kazo .BLU
E:
print ("Mi sentas la bluson :(")
Aro estis preparita por revizio
fonto: opennet.ru