吉多·范罗苏姆
新的实现非常类似于 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