吉多·範羅蘇姆
新的實作很像 Scala、Rust 和 F# 中提供的「match」運算符,它將指定表達式的結果與基於「case」運算符的區塊中列出的模式清單進行比較。 與 C、Java 和 JavaScript 中可用的「switch」運算子不同,基於「match」的表達式提供了更多功能
def http_error(狀態):
比賽狀態:
案例400:
返回“錯誤請求”
案例401|403|404:
返回“不允許”
案例418:
回到“我是一個茶壺”
案件_:
返回“其他的東西”
例如,您可以解壓縮物件、元組、列表和任意序列,以根據現有值綁定變數。 允許定義嵌套模板,在模板中使用附加“if”條件,使用掩碼(“[x, y, *rest]”)、鍵/值映射(例如,{“bandwidth”: b, “latency ”: l} 提取「頻寬」和「延遲」值和字典),提取子模板(「:=」運算子),在模板中使用命名常數。 在類別中,可以使用“__match__()”方法自訂匹配行為。
從資料類導入資料類
@資料類
類別點:
x:整數
y:整數
def 其中(點):
賽點:
案例點(0, 0):
列印(“原點”)
案例點(0,y):
印出(f“Y = {y}”)
案例點(x,0):
印出(f“X = {x}”)
案例點():
print("在別的地方")
案件_:
print("不是重點")
賽點:
case Point(x, y) 若 x == y:
print(f"Y=X 在 {x}")
情況點(x,y):
print(f"不在對角線上")
紅、綠、藍 = 0、1、2
搭配顏色:
案例.紅色:
print("我看到紅色了!")
案例.綠色:
print("草是綠的")
案例.BLU
E:
print(“我感到憂鬱:(“)
已準備一套供審核
來源: opennet.ru