Switch ... Case 語法你支不支持?
Python3.10 新增了一個語法特性。
就是最近一直被熱議的 switch-case 語句
我剛接觸Python的時候,也納悶Python咋個 switch 語句都沒有。
后來想明白了, 因為Python的哲學(xué)里面推崇的是簡單實用,從Python之禪里面也能窺探一二
- 任何問題應(yīng)有一種
- 且最好只有一種,
- 顯而易見的解決方法
在沒有 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最佳實踐里面,某些場景就推薦用字典來實現(xiàn), 例如根據(jù)某個變量值返回不同的結(jié)果時
- 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 關(guān)鍵字,比Java少了“break”關(guān)鍵字。
Python從91年發(fā)布到今天經(jīng)歷了30個年頭
說真的,沒有 switch case 完全不影響開發(fā)效率,到3.10引入這么個語法糖出來,只能算是個不痛不癢的功能
真正用在生產(chǎn)環(huán)境,也是5、6年之后了,除非后面有重大版本的發(fā)布,誰沒事瞎折騰跟著你每年升級版本。
要知道,現(xiàn)在依然還有不少老系統(tǒng)還跑著Python2.x
我個人對這種語法糖層面的改進基本是沒啥可激動的!你要問我支不支持,我肯定支持,這樣以后我也可以理直氣壯地跟別人說,誰說Python不支持 swtich case....
本文轉(zhuǎn)載自微信公眾號「Python之禪」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Python之禪公眾號。