Guido van Rossum akufuna kuti awonjezere ogwiritsa ntchito ku Python

Guido van Rossum anayambitsa dongosolo kuti liwunikenso anthu zofunika pakugwiritsa ntchito ofananira mapeni (machesi ndi mlandu) mu Python. Zindikirani kuti malingaliro owonjezera ogwiritsira ntchito mawonekedwe adasindikizidwa kale mu 2001 ndi 2006 (gawo-0275, gawo-3103), koma anakanidwa mokomera kukhathamiritsa kwa "ngati ... elif ... kwina" popanga unyolo wofananira.

Kukhazikitsa kwatsopano kuli ngati wogwiritsa ntchito "machesi" woperekedwa ku Scala, Rust, ndi F #, yemwe amafanizira zotsatira za mawu omwe atchulidwa ndi mndandanda wazomwe zalembedwa mu midadada kutengera wogwiritsa ntchito "case". Mosiyana ndi "switch" yopezeka mu C, Java, ndi JavaScript, mawu oti "match" amapereka zambiri. ntchito zambiri. Zikudziwika kuti omwe akufunsidwawo athandizira kuwerengeka kwa kachidindo, kuchepetsa kufananitsa zinthu za Python mopanda pake ndi kukonza zolakwika, komanso kuonjezera kudalirika kwa code chifukwa chotheka kuwonjezera. static mtundu kufufuza.

def http_error(status):
mawonekedwe ofananira:
mlandu 400:
Bweretsani "Pempho loyipa"
mlandu 401|403|404:
kubwerera "Sizololedwa"
mlandu 418:
kubwerera "Ndine tiyi"
mlandu_:
kubwerera "Chinachake"

Mwachitsanzo, mutha kumasula zinthu, ma tuples, mindandanda, ndi zotsatizana zosasinthika kuti mumangire zosinthika kutengera zomwe zilipo kale. Zimaloledwa kufotokozera ma templates okhala ndi zisa, kugwiritsa ntchito zina zowonjezera "ngati" mu template, gwiritsani ntchito masks ("[x, y, * rest]"), makiyi / mtengo wa mapu (mwachitsanzo, {"bandwidth": b, "latency ”: l} kuti mutulutse "bandwidth" ndi "latency" ndi dikishonale), chotsani ma subtemplates (":=" woyendetsa), gwiritsani ntchito zosinthika mu template. M'makalasi, ndizotheka kusintha machitidwe ofananira pogwiritsa ntchito njira ya "__match___()".

kuchokera ku dataclass import dataclass

@dataclass
kalasi Point:
x: inu
y :ine

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")
mlandu_:
print ("Palibe mfundo")

match point:
nkhani Point(x, y) ngati x == y:
sindikiza (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 lakonzedwa kuti liwunikenso zigamba ndi zoyeserera kukhazikitsa zomwe akufuna, koma mtundu womaliza ukadali anakambirana. Mwachitsanzo, zoperekedwa M'malo mwa mawu oti "case _:" pa mtengo wokhazikika, gwiritsani ntchito mawu osakira "ena:" kapena "osasintha:", popeza "_" m'malo ena amagwiritsidwa ntchito ngati kusintha kwakanthawi. Chokayikitsanso ndi bungwe lamkati, lomwe latengera kumasulira mawu atsopano kukhala ma bytecode ofanana ndi omwe amagwiritsidwa ntchito "ngati ... elif ... else" amamanga, omwe sangapereke ntchito yomwe mukufuna pokonza magulu akulu kwambiri ofananitsa.

Source: opennet.ru

Kuwonjezera ndemanga