switch(expression){
case value1:
// 语句
break; // 可选
case value2:
// 语句
break; // 可选
default: // 可选
// 语句
}
FAQ 即 Frequently Asked Questions 的缩写,表示常见问题,官方列了 27 个常见问题,完整清单在此:https://mp.weixin.qq.com/s/zabIvt4dfu_rf7SmGZXqXg
A quick poll during my keynote presentation at PyCon 2007 shows this proposal has no popular support. I therefore reject it.
我在 PyCon 2007 的主题演讲中做了一个快速的民意调查,结果表明这个提案没有得到广泛的支持。因此,我拒绝了它。
switch EXPR:
case CONSTANT:
SUITE
case CONSTANT:
SUITE
...
else:
SUITE
case EXPR:
of CONSTANT:
SUITE
of CONSTANT:
SUITE
else:
SUITE
case EXPR:
if CONSTANT:
SUITE
if CONSTANT:
SUITE
else:
SUITE
when EXPR:
in CONSTANT_TUPLE:
SUITE
in CONSTANT_TUPLE:
SUITE
...
else:
SUITE
# case 分支不缩进
switch EXPR:
case EXPR:
SUITE
case EXPR:
SUITE
....
else:
SUITE
# switch 语句后不加冒号
switch EXPR
case EXPR:
SUITE
case EXPR:
SUITE
....
else:
SUITE
# 省略 case 关键字
switch EXPR:
EXPR:
SUITE
EXPR:
SUITE
...
else:
SUITE
case EXPR, EXPR, ...:
# Guido 优选的
case in EXPR_LIST:
case *EXPR:
case [*]EXPR, [*]EXPR, ...:
case *(EXPR, EXPR, ...):
def average(*args):
match args:
case [x, y]: # captures the two elements of a sequence
return (x + y) / 2
case [x]: # captures the only element of a sequence
return x
case []:
return 0
case x: # captures the entire sequence
return sum(x) / len(x)