switch ... case 语法你支不支持?

共 1266字,需浏览 3分钟

 ·

2021-04-23 13:35

Python3.10 新增了一个语法特性。

就是最近一直被热议的 switch-case 语句

我刚接触Python的时候,也纳闷Python咋个 switch 语句都没有。

后来想明白了, 因为Python的哲学里面推崇的是简单实用,从Python之禅里面也能窥探一二

任何问题应有一种
且最好只有一种,
显而易见的解决方法

在没有 switch … case 语句的时候,我们都是怎么解决这种问题的呢?

用 if … elif…

例如:

if code == 200:
return "ok"
elif code == 404:
return "no found"
elif code == 500
return "error"
else:
return "unknow"

这段代码看起来就很直观,只是稍微啰嗦的地方就是每行都有code==xxx的表达式判断语句

于是,在一些Python最佳实践里面,某些场景就推荐用字典来实现, 例如根据某个变量值返回不同的结果时


data = {
200: "ok",
404: "no found",
500: "error",
}
value = data.get(code, "unkonw")

很好的解决的代码繁琐的问题。

我们再来看看Python3.10中的switch case 怎么用的

http_code = "418"
match http_code:
case "200":
print("OK")
do_something_good()
case "404":
print("Not Found")
do_something_bad()
case "418":
print("I'm a teapot")
make_coffee()
case _:
print("Code not found")

和其他语言中的switch case 语法差不多,新增了match 关键字,比Java少了“break”关键字。

Python从91年发布到今天经历了30个年头

说真的,没有 switch case 完全不影响开发效率,到3.10引入这么个语法糖出来,只能算是个不痛不痒的功能

真正用在生产环境,也是5、6年之后了,除非后面有重大版本的发布,谁没事瞎折腾跟着你每年升级版本。

要知道,现在依然还有不少老系统还跑着Python2.x

我个人对这种语法糖层面的改进基本是没啥可激动的!你要问我支不支持,我肯定支持,这样以后我也可以理直气壮地跟别人说,谁说Python不支持 swtich case....

留言说说你的看法

浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报