Guido van Rossum
Ang bagong pagpapatupad ay katulad ng "tugma" na operator na ibinigay sa Scala, Rust, at F#, na naghahambing sa resulta ng isang tinukoy na expression sa isang listahan ng mga pattern na nakalista sa mga bloke batay sa operator na "case". Hindi tulad ng operator na "switch" na available sa C, Java, at JavaScript, ang mga expression na nakabatay sa "tugma" ay nag-aalok ng higit pa
def http_error(status):
katayuan ng tugma:
kaso 400:
ibalik ang "Masamang kahilingan"
kaso 401|403|404:
ibalik ang "Hindi pinapayagan"
kaso 418:
bumalik "ako ay isang tsarera"
kaso_:
ibalik ang "Ibang bagay"
Halimbawa, maaari mong i-unpack ang mga bagay, tuple, listahan, at arbitrary na pagkakasunud-sunod upang i-bind ang mga variable batay sa mga umiiral nang value. Pinapayagan na tukuyin ang mga nested na template, gumamit ng karagdagang "kung" kundisyon sa template, gumamit ng mga mask ("[x, y, *rest]"), key/value mappings (halimbawa, {"bandwidth": b, "latency ”: l} upang kunin ang mga halaga at diksyunaryo ng "bandwidth" at "latency", kunin ang mga subtemplates (":=" operator), gumamit ng pinangalanang mga constant sa template. Sa mga klase, posibleng i-customize ang pagtutugma ng gawi gamit ang "__match__()" na paraan.
mula sa mga dataclass ay nag-import ng dataclass
@dataclass
Punto ng klase:
x:int
y:int
def whereis(point):
match point:
case Point(0, 0):
print("Pinagmulan")
case Point(0, y):
print(f"Y={y}")
case Point(x, 0):
print(f"X={x}")
case Point():
print("Sa ibang lugar")
kaso_:
print("Hindi isang punto")
match point:
case Point(x, y) kung x == y:
print(f"Y=X sa {x}")
case Point(x, y):
print(f"Wala sa dayagonal")
RED, GREEN, BLUE = 0, 1, 2
kulay ng tugma:
kaso .RED:
print ("Nakikita ko ang pula!")
kaso .BERDE:
print("Ang damo ay berde")
kaso .BLU
E:
print(«I’m feeling the blues :(«)
Isang set ang inihanda para sa pagsusuri
Pinagmulan: opennet.ru