Guido van Rossum tau thov kom ntxiv cov qauv sib piv rau Python

Guido van Rossum tswvcuab tsab ntawv rau kev txheeb xyuas hauv zej zog cov lus qhia tshwj xeeb rau kev siv cov qauv sib piv cov neeg ua haujlwm (kev sib tw thiab rooj plaub) hauv Python. Nws yuav tsum raug sau tseg tias cov lus pom zoo los ntxiv cov qauv sib piv cov tswv lag luam twb tau luam tawm xyoo 2001 thiab 2006 (peb-0275, peb-3103), tab sis raug tsis lees paub los ntawm kev ua kom zoo dua "yog tias ... elif ... lwm tus" tsim rau kev sib sau ua ke sib txuas.

Qhov kev siv tshiab no zoo li "match" tus neeg teb xov tooj muab hauv Scala, Rust, thiab F#, uas sib piv cov txiaj ntsig ntawm cov lus qhia tshwj xeeb nrog cov npe ntawm cov qauv uas tau teev tseg hauv cov blocks raws li "cov ntaub ntawv" tus neeg teb xov tooj. Tsis zoo li "hloov" tus neeg teb xov tooj muaj nyob rau hauv C, Java, thiab JavaScript, "match"-raws li kab lus muaj ntau yam ntxiv dav functionality. Nws tau raug sau tseg tias cov neeg ua haujlwm tau thov yuav txhim kho kev nyeem ntawv ntawm cov lej, ua kom yooj yim rau kev sib piv ntawm cov khoom siv Python arbitrary thiab debugging, thiab tseem ua rau kom muaj kev ntseeg siab ntawm cov lej vim muaj peev xwm txuas ntxiv. static hom xyuas.

def http_error(status):
match xwm txheej:
rooj plaub 400:
rov qab "Kev thov phem"
Case 401 | 403 | 404:
rov qab "Tsis pub"
rooj plaub 418:
rov qab "Kuv yog ib lub teapot"
cas _:
rov qab "Ib yam dab tsi ntxiv"

Piv txwv li, koj tuaj yeem ntim cov khoom, tuples, cov npe, thiab cov khoom sib txawv los khi cov khoom sib txawv raws li cov txiaj ntsig uas twb muaj lawm. Nws raug tso cai los txhais cov qauv nested, siv ntxiv "yog" cov xwm txheej hauv cov qauv, siv lub qhov ncauj qhov ntswg ([x, y, * so]"), key / value maps (piv txwv li, {"bandwidth": b, "latency ”: l} txhawm rau rho tawm "bandwidth" thiab "latency" qhov tseem ceeb thiab phau ntawv txhais lus), rho tawm cov qauv (": = "tus neeg teb xov tooj), siv lub npe tsis tu ncua hauv template. Hauv cov chav kawm, nws tuaj yeem hloov kho tus cwj pwm sib piv siv "__match__()" txoj kev.

los ntawm dataclasses import dataclass

@dataclass
Chav Kawm Point:
x :ib
y :ib

def whereis(point):
match point:
Case Point(0):
print("Keeb kwm")
Case Point(0, y):
print(f"Y={y}")
Case Point(x, 0):
print(f"X={x}")
Case Point():
print("Lwm qhov chaw")
cas _:
print("Tsis yog point")

match point:
case Point(x,y) yog x == y:
print(f"Y=X at {x}")
Case Point(x, y):
print(f "Tsis yog ntawm kab pheeb ces kaum")

RED, GREEN, BLUE = 0, 1, 2
phim xim:
CAS .RED:
print("Kuv pom liab!")
Case .GREEN:
print("Nqaij ntsuab")
cas .BLU
E:
print(“Kuv xav tias lub blues :(“)

Ib txheej tau npaj rau kev tshuaj xyuas thaj ua rau thaj nrog kev sim siv thov specification, tab sis qhov kawg version yog tseem sib thamCov. Piv txwv muaj Hloov chaw ntawm cov lus "case _:" rau tus nqi pib, siv lo lus tseem ceeb "lwm:" lossis "default:", txij li "_" hauv lwm cov ntsiab lus yog siv los ua qhov hloov pauv ib ntus. Kuj tseem muaj lus nug yog lub koom haum sab hauv, uas yog raws li kev txhais lus tshiab rau hauv bytecode zoo ib yam li siv rau "yog ... elif ... lwm tus" tsim, uas yuav tsis muab qhov kev xav tau thaum ua cov kev sib piv loj heev.

Tau qhov twg los: opennet.ru

Ntxiv ib saib