Guido van Rossum zolemba kuti ziganizidwe ndi anthu kuti mugwiritse ntchito ofananira ndi mawonekedwe (machesi ndi mlandu) mu Python. Zindikirani kuti malingaliro owonjezera ofananira ndi mawonekedwe adasindikizidwa kale mu 2001 ndi 2006 (, ), koma anakanidwa mokomera kukhathamiritsa kwa "ngati ... elif ... kwina" kumanga kuti apange unyolo wofananira.
Kukhazikitsa kwatsopano kuli kofanana kwambiri ndi wogwiritsa ntchito "machesi" omwe amaperekedwa ku Scala, Rust, ndi F #, omwe amafananiza zotsatira za mawu omwe atchulidwa motsutsana ndi mndandanda wamachitidwe omwe atchulidwa mu midadada. Mosiyana ndi "switch" yopezeka mu C, Java, ndi JavaScript, mawu oti "match" amapereka zambiri. Zikudziwika kuti omwe akufunsidwawo athandizira kuwerengeka kwa kachidindo, kuchepetsa kufananiza kwa zinthu za Python zosagwirizana ndi kukonza zolakwika, komanso kuonjezera kudalirika kwa code chifukwa chotheka kuwonjezera. .
def http_error(status):
mawonekedwe ofananira:
mlandu 400:
Bweretsani "Pempho loyipa"
mlandu 401|403|404:
kubwerera "Sizololedwa"
mlandu 418:
kubwerera "Ndine tiyi"
vuto _:
kubwerera "Chinachake"
Mwachitsanzo, ndizotheka kumasula zinthu, ma tuples, mindandanda, ndi zotsatizana zosasinthika kuti amangirire zosinthika kutengera zomwe zilipo kale. Ndizotheka kufotokozera ma templates okhala ndi zisa, gwiritsani ntchito zina zowonjezera "ngati" mu template, gwiritsani ntchito masks ("[x, y, * rest]"), makiyi a mapu / mtengo awiriawiri (mwachitsanzo, {"bandwidth": b, "latency": l} kuchotsa "bandwidth" ndi "latency" makhalidwe ndi dikishonale), kuchotsani ogwiritsira ntchito ma templates nthawi zonse (": template ". Khalidwe lofananira litha kusinthidwa m'makalasi pogwiritsa ntchito njira ya "__match__()".
kuchokera ku dataclass import dataclass
@dataclass
kalasi Point:
x: inu
y: inu
def whereis(point):
match point:
nkhani Point (0, 0):
sindikiza ("Origin")
nkhani Point (0, y):
sindikiza (f»Y={y}»)
nkhani Point(x, 0):
sindikiza (f»X={x}»)
kesi Point ():
sindikiza ("Penapake")
vuto _:
print ("Palibe mfundo")
match point:
nkhani Point(x, y) ngati x == y:
sindikizani(f»Y=X pa {x}»)
nkhani Point (x, y):
sindikiza (f"Osati pa diagonal")
CHOFIIRA, CHOGIRIRA, BLUU = 0, 1, 2
mtundu wofananira:
mlandu .RED:
kusindikiza ("Ndikuwona zofiira!")
nkhani .GREEN:
sindikiza ("Udzu ndi wobiriwira")
mlandu .BLU
E:
sindikiza ("Ndikumva chisoni :(")
Gulu lazinthu lakonzedwa kuti liwunikenso. ndi zoyeserera zomwe akufuna, koma mtundu womaliza ukadali . Mwachitsanzo, M'malo mwa mawu oti "case _:" pa mtengo wokhazikika, gwiritsani ntchito mawu oti "ena:" kapena "default:", monga "_" amagwiritsidwa ntchito ngati kusintha kwakanthawi muzinthu zina. Bungwe lamkati, lotengera kumasulira mawu atsopano kukhala ma bytecode ofanana ndi omwe amagwiritsidwa ntchito "ngati...elif...else" amanga, amadzutsanso mafunso, omwe sangapereke ntchito yomwe mukufuna pokonza magulu akulu kwambiri ofananitsa.
Source: opennet.ru
