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....
本文转载自微信公众号「Python之禅」,可以通过以下二维码关注。转载本文请联系Python之禅公众号。