Guido van Rossum akakurudzira kuwedzera maitiro anoenderana nevashandisi kuPython

Guido van Rossum kuunzwa gwaro rekuongorora nharaunda kutaurwa yekushandisa maitiro ekufananidza vashandisi (mechi uye kesi) muPython. Zvinofanira kucherechedzwa kuti zvikumbiro zvekuwedzera mapatani ekufananidza vanoshanda zvakatoburitswa muna 2001 uye 2006 (pep-0275, pep-3103), asi zvakarambwa nekuda kwekugadzirisa "kana ... elif ... zvimwe" kuvaka kwekugadzira cheni dzinoenderana.

Kuitwa kutsva kwakafanana ne "match" opareta yakapihwa muScala, Rust, uye F #, iyo inofananidza mhedzisiro yekutaura kwakatemwa nerunyorwa rwemapateni akanyorwa mumabhuroko akavakirwa pane "kesi" mushandisi. Kusiyana ne "switch" mushandisi anowanikwa muC, Java, uye JavaScript, "match" -based expressions inopa zvakawanda. yakakura kushanda. Zvinocherechedzwa kuti vafambisi vakarongwa vachavandudza kuverenga kwekodhi, kurerutsa kuenzanisa kwezvinhu zvisina tsarukano zvePython uye kugadzirisa, uye zvakare kuwedzera kuvimbika kwekodhi nekuda kwekugona kwekuwedzera. static mhando yekutarisa.

def http_error(status):
match status:
kesi 400:
dzorera "Chikumbiro chakaipa"
nyaya 401|403|404:
dzoka "Hazvibvumirwe"
kesi 418:
dzoka "ndiri teapot"
nyaya_:
dzoka "Chimwe chinhu"

Semuyenzaniso, unogona kuburitsa zvinhu, tuples, rondedzero, uye zvisina tsarukano sequences kuti usunge vhezheni zvichienderana nehunhu huripo. Inobvumirwa kutsanangura matemplate anested, shandisa mamwe mamiriro e "kana" mutemplate, shandisa masikisi ("[x, y, *zorora]"), kiyi / kukosha mappings (semuenzaniso, {"bandwidth": b, "latency ”: l} kuburitsa "bandwidth" uye "latency" kukosha uye duramazwi), bvisa matemplate madiki (":=" mushandisi), shandisa ane mazita anogara ari mutemplate. Mumakirasi, zvinokwanisika kugadzirisa maitiro ekufananidza uchishandisa "__match__ ()" nzira.

kubva kudataclasses import dataclass

@dataclass
kirasi Point:
x:int
y :int

def whereis(point):
match point:
nyaya Point (0, 0):
dhinda ("Mavambo")
nyaya Point(0, y):
dhinda(f"Y={y}")
nyaya (x, 0):
dhinda(f"X={x}")
nyaya Point():
print ("Kumwe kumwe")
nyaya_:
dhinda ("Kwete pfungwa")

match point:
nyaya Point(x, y) kana x == y:
dhinda(f"Y=X pa {x}")
nyaya Poindi(x, y):
dhinda (f"Kwete pane diagonal")

RED, GREEN, BLUE = 0, 1, 2
match color:
case .RED:
print("Ndinoona tsvuku!")
case .GREEN:
dhinda ("Uswa hwakasvibira")
nyaya .BLU
E:
dhinda ("Ndiri kunzwa kufara :(")

Seti yakagadzirirwa kuongororwa zvigamba with experimental kuitiswa zvakatsanangurwa, asi shanduro yekupedzisira ichiripo kukurukurwa. Somuenzaniso, akapa Panzvimbo peshoko rekuti "case _:" kune iyo default kukosha, shandisa kiyi izwi rekuti "zvimwe:" kana "default:", sezvo "_" mune mamwe mamiriro achishandiswa sechinhu chenguva pfupi. Zvakare zvinopokana isangano remukati, iro rinobva pakuturikira mataurirwo matsva kubytecode akafanana neanoshandiswa ku“kana ... elif ... zvimwe” anovaka, izvo zvisingazopi kuita kwaunoda pakugadziridza makuru makuru ekuenzanisa.

Source: opennet.ru

Voeg