<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 3.10來了,switch語法終于出現(xiàn)

          共 3009字,需瀏覽 7分鐘

           ·

          2021-04-19 17:09

          機器之心報道

          編輯:陳萍


          我們會在今天推文的留言中選出三位幸運粉絲送出6.6元紅包,快來和我互動吧~


          不用再自己琢磨如何實現(xiàn) switch 功能了。

          對于從事數(shù)據(jù)科學(xué)和人工智能領(lǐng)域的人們來說,Python 是大家的首選編程語言。根據(jù)最近的一項調(diào)查,27% 的程序員開發(fā)職位要求掌握 Python 語言,今年年初這一數(shù)字還只是 18.5%。


          Python 流行的原因在于其擁有非常直觀的能力:這門語言擁有大量的庫、足夠高的生產(chǎn)效率,還相對易于學(xué)習(xí)。去年 10 月,Python 的 3.9 版正式發(fā)布了,從字典更新 / 合并到添加新的字符串方法,再到 zoneinfo 庫的引入,Python 3.9 添加了許多新特性.

          Python3.10 的第二個 alpha 版本也已于去年 11 月初發(fā)布,相比于不久前發(fā)布的 3.9 版本,新版本對類型注釋擴展、zip、位計數(shù)、字典映射又有了新的改進。就在昨天,Python 3.10 beta 版發(fā)布了,新的 beta 版最大的亮點可能就是引入了 switch-case 語句。

          Python 3.10 beta 版新改進

          Switch 語句存在于很多編程語言中,但 Python 編程語言不支持 Switch 語句。早在 2016 年,PEP 3103 就被提出,建議 Python 支持 switch-case 語句。然而,在調(diào)查中發(fā)現(xiàn)很少人支持該特性,Python 開發(fā)人員放棄了它。

          時間在推到 2020 年,Python 的創(chuàng)始人 Guido van Rossum,提交了顯示 switch 語句的第一個文檔,命名為 Structural Pattern Matching,見 PEP 634 。

          如今,隨著 Python 3.10 beta 版的發(fā)布,終于將 switch-case 語句納入其中。

          帶圓括號的上下文管理器:現(xiàn)在支持在上下文管理器中跨多行使用括號進行延續(xù)。也可以在所包含組的末尾使用逗號。

          with (    CtxManager1() as example1,    CtxManager2() as example2,    CtxManager3() as example3,):    ...

          錯誤消息 - NameErrors:當(dāng)打印由 interpreter 引發(fā)的 NameError 時,PyErr_Display() 將在引發(fā)異常的函數(shù)中提供相似變量名的建議:


          PEP 634 結(jié)構(gòu)模式匹配:模式匹配允許用戶在 match 后面跟隨數(shù)個 case 語句。當(dāng)在程序執(zhí)行 match-case 時,有匹配的語句,程序就會進入相應(yīng)的 case 語句來執(zhí)行操作。

          match-case 語法和操作:模式匹配的通用語法是:

          match subject:    case <pattern_1>:        <action_1>    case <pattern_2>:        <action_2>    case <pattern_3>:        <action_3>    case _:        <action_wildcard>

          match 語句接受一個表達(dá)式,并將其值與作為一個或多個 case 塊給出的連續(xù)模式進行比較。match-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")

          下圖是 match-case 語句執(zhí)行示意圖。程序會檢查多個 case 條件,并根據(jù)在變量 http_code 中找到的值執(zhí)行不同的操作。


          同樣的,你也可以使用一組 if-elif-else 語句來構(gòu)建相同的邏輯:

          http_code = "418"if http_code == "418":    print("OK")    do_something_good()elif http_code == "404":    print("Not Found")    do_something_bad()elif http_code == "418"    print("I'm a teapot")    make_coffee()else:    print("Code not found")

          然而,通過使用 match-case 語句,刪除了 http_code == 的重復(fù)執(zhí)行,當(dāng)測試許多不同的條件時使用 match-case,http_code == 看起來更加清晰。

          我們可以通過一個簡單的例子來了解模式匹配:用 C、Java 或 JavaScript(以及許多其他語言)中的 switch 語句將對象(數(shù)據(jù)對象)與文本(模式)進行匹配。switch 語句通常用于將對象 / 表達(dá)式與包含文字的 case 語句進行比較。

          雖然使用嵌套 if 語句的命令式指令系列可以用來完成類似于結(jié)構(gòu)模式匹配的任務(wù),但它不如聲明式方法那么清晰。相反,聲明性方法聲明了匹配所需滿足的條件,并且通過其顯式模式更具可讀性。雖然結(jié)構(gòu)模式匹配可以以最簡單的形式使用,將變量與 case 語句中的文本進行比較,但它對 Python 的真正價值在于它對對象類型和大小的處理。

          match-case 可以說是此次 Python 3.10 beta 版本最大的亮點。對于這種表達(dá)式,有人喜歡,有人憎惡。在 Python 還不支持 switch-case 之前,大家可能都是使用字典進行相關(guān)操作。有人說 switch 除了讀著方便,沒什么優(yōu)點;還有人說 Python 的閉包機制,dict 的 value 可以是帶閉包的函數(shù),這樣就使得表達(dá)能力比 switch-case 更上一層樓;但總歸 Python 3.10 beta 版本納入了 switch-case,為開發(fā)者提供了另一種選擇。

          更多詳細(xì)信息,請參考:https://docs.python.org/3.10/whatsnew/3.10.html


          ············END············


          昨日留言紅包名單


          恭喜以上三位童鞋,加小編微信(Mayyy530)領(lǐng)取紅包吧





          1. 阿里云盤電腦版來了!!

          2. 罕見!百度、微博、拼多多、B站等全國34家互聯(lián)網(wǎng)巨頭集體表態(tài)

          3. 真香!15個新手不可錯過的Python高級庫

          4. 整理了十個Python自動化操作,拿走即用!



          在看”和“點贊”都是對我們最好的支持 

          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色视屏久久 | 成人免看一级a一片A片 | 肏B人人操| gogo大胆无码无码免费视频 | 视频国产精品 |