Guido van Rossum
Mae'r gweithrediad newydd yn debyg iawn i'r gweithredwr "match" a ddarperir yn Scala, Rust, a F#, sy'n cymharu canlyniad mynegiant penodedig â rhestr o batrymau a restrir mewn blociau yn seiliedig ar y gweithredwr "achos". Yn wahanol i'r gweithredwr "switsh" sydd ar gael yn C, Java, a JavaScript, mae ymadroddion sy'n seiliedig ar "match" yn cynnig llawer mwy
def http_error(statws):
statws cyfatebol:
achos 400:
dychwelyd "Cais drwg"
achos 401|403|404:
dychwelyd "Ni chaniateir"
achos 418:
dychwelyd "Rwy'n tebot"
achos_:
dychwelyd "Rhywbeth arall"
Er enghraifft, gallwch ddadbacio gwrthrychau, tuples, rhestrau, a dilyniannau mympwyol i rwymo newidynnau yn seiliedig ar werthoedd presennol. Caniateir diffinio templedi nythu, defnyddio amodau “os” ychwanegol yn y templed, defnyddio masgiau (“[x, y, * gorffwys]”), mapiadau allwedd/gwerth (er enghraifft, {“lled band”: b, “latency ” : l} i echdynnu gwerthoedd "lled band" a "latency" a geiriadur), echdynnu is-templates ( " : = " gweithredwr), defnyddio cysonion a enwir yn y templed. Mewn dosbarthiadau, mae'n bosibl addasu ymddygiad paru gan ddefnyddio'r dull “__match__()”.
o dataclasses mewnforio dosbarth data
@dosbarthdata
Pwynt dosbarth:
x:int
y:int
def ble mae (pwynt):
pwynt cyfatebol:
Pwynt achos(0, 0):
print ("tarddiad")
Pwynt achos(0, y):
print(f"Y={y}")
Pwynt achos(x, 0):
print(f"X={x}")
Pwynt achos():
print ("Rhywle arall")
achos_:
print ("Dim pwynt")
pwynt cyfatebol:
achos Pwynt(x, y) os x == y:
print(f"Y=X yn {x}")
achos Pwynt(x, y):
print(f"Ddim ar y groeslin")
COCH, GWYRDD, GLAS = 0, 1, 2
lliw cyfatebol:
achos .RED:
print ("Rwy'n gweld coch!")
achos .GREEN:
print ("Mae glaswellt yn wyrdd")
achos .BLU
E:
print("Dwi'n teimlo'r felan :(")
Mae set wedi'i pharatoi i'w hadolygu
Ffynhonnell: opennet.ru