<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在Python 3.10釋出之前,Python是沒有類似於其他語言中switch語句的,要實現類似的功能最簡單的方法就是通過if ... elif ... else ...語句,但是這樣畢竟不夠優雅,不夠“Pythonic”
更推薦的做法是通過字典(dict)實現。
想要通過字典來實現條件分支語句,首先我們需要定義一個字典,來表示不同case和返回值/函數之間的對映關係,然後再利用字典的特性,即可以實現類似於switch的功能。下面定義一個簡單的函數,傳入不同的case就會列印不同的內容,也可以將列印內容的語句替換成你想要執行的函數:
def switch(case): mapping = { 1: "print('case 1')", 2: "print('case 2')" } return eval(mapping[case]) switch(1) 執行結果: case 1
可以看到,輸出結果正是我們想要的“case 1”的結果。
在Python 3.10出現之前,我們更多的是通過上面這種字典對映的方式,來實現類似於switch語句的功能。但是伴隨著Python 3.10的釋出,Python也終於迎來了自己的'switch'語句,也就是接下來我們重點介紹的match語句。
Python 3.10 新特性—— match 語句,參考資料:Python 3.10增加了比switch更強大的match表示式在執行以下程式碼之前,請先確保自己的Python版本大於等於3.10。和其他語言一樣,當變數num滿足哪個case的條件時,就會執行該條件下的對應程式碼:
num = 5 match num: case 10: print('you lose') case 5: print('you win') 執行結果: you win
當預設分支#當變數a不滿足任意一個case條件時,如果我們沒有對“其他“情況進行處理,那麼是不會執行任何操作的。
下面的程式碼是不會有任何輸出的,因為a不滿足任意一個條件:
num = 3 match num: case 1: print('num 1') case 2: print('num 2') 無輸出
如果想要對」其他「情況進行處理,那麼寫法如下: num = 3 match num: case 1: print('num 1') case 2: print('num 2') case default: print('case default', default) 執行結果: case default 3
可以看到,當變數a不符合任意一個條件時,就會執行到我們的default分支,同時會把變數值賦值給default變數。注意:這裡的default僅僅只是一個變數名而已,並非規定寫法,也可以使用其他變數名,例如x等。其作用就是在變數不符合任意一個分支條件時,將變數值賦值給該變數。
Python的match語句不僅支援數值型別的分支,也支援其他資料型別,例如元組(tuple)
a = (2, 4) match a: case (1, 2): print('case 1') case (2, x): print('case 2', x) 執行結果: case 2 4
可以看到,變數a在匹配到第二個分支條件時,還把元組的第二個元素值4賦值給了變數x。在case中使用判斷語句#不僅如此,match語句還支援在分支條件中插入判斷語句:
a = (2, 2) flag = False match a: case (1, 2): print('case 1') case (2, x) if flag: print('case 2', x) case default: print('case default', default) 執行結果: case default (2, 2)
由於第二個分支條件中if flag為False,不符合條件,所以程式碼進入到最後一個分支條件中。
以上就是Python3.10新特性之match語句範例詳解的詳細內容,更多關於Python3.10特性match語句的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45