Switch ... Case 语法你支不支持?

开发 前端
Python3.10 新增了一个语法特性。就是最近一直被热议的 switch-case 语句,我刚接触Python的时候,也纳闷Python咋个 switch 语句都没有。

[[394505]]

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

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

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

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

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

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

用 if … elif…

例如:

  1. if code == 200: 
  2.     return "ok" 
  3. elif code == 404: 
  4.     return "no found" 
  5. elif code == 500 
  6.     return "error" 
  7. else
  8.     return "unknow" 

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

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

  1. data = { 
  2.     200: "ok"
  3.     404: "no found"
  4.     500: "error"
  5. value = data.get(code, "unkonw"

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

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

  1. http_code = "418" 
  2. match http_code: 
  3.     case "200"
  4.         print("OK"
  5.         do_something_good() 
  6.     case "404"
  7.         print("Not Found"
  8.         do_something_bad() 
  9.     case "418"
  10.         print("I'm a teapot"
  11.         make_coffee() 
  12.     case _: 
  13.         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之禅公众号。  

 

责任编辑:武晓燕 来源: Python之禅
相关推荐

2020-07-02 10:30:52

iPhone苹果北斗

2022-04-26 10:13:00

哈希索引MySQLInnoDB

2020-10-09 06:48:19

Pythonswitch语句

2020-07-22 08:01:41

Python开发运算符

2021-02-01 13:53:53

StringlongJava

2011-12-09 20:28:50

2021-01-22 15:31:47

JavaSwitchString

2022-02-16 15:07:34

协程JavaQuasar

2010-06-24 17:42:08

服务不支持chkcon

2021-10-27 07:15:36

Go 循环引用

2020-10-20 07:13:44

Web动态化CSS

2019-10-11 08:44:38

InnoDB哈希索引MySQL

2021-12-15 07:49:22

Go语言设计

2021-12-09 10:51:47

Go继承

2010-12-20 14:22:27

Nvidia英特尔Sandy Bridg

2010-06-24 17:37:59

服务不支持chkcon

2020-07-09 09:56:48

Python语言开发

2012-02-01 10:20:19

Firefox 10发布

2009-02-23 09:19:33

windows 7启动画面

2010-01-27 09:10:06

Windows 7混合硬盘技术
点赞
收藏

51CTO技术栈公众号