python 3.10支持match語句,3,10以下不支持。
match語句接受一個表達式,并將其值與作為一個或多個case塊給出的連續(xù)模式進行比較。這表面上類似于C、Java或JavaScript(以及許多其他語言)中的switch語句,但更類似于Rust或Haskell等語言中的模式匹配。只有第一個匹配的模式才會被執(zhí)行,它還可以將值中的組件(序列元素或?qū)ο髮傩裕┨崛〉阶兞恐小?/p>
最簡單的形式是將一個目標值與一個或多個字面值進行比較:
【資料圖】
def http_error(status): match status: case 400: return "Bad request" case 404: return "Not found" case 418: return "I"m a teapot" case _: return "Something"s wrong with the internet"
注意最后一個代碼塊:“變量名” _ 被作為 通配符 并必定會匹配成功。 如果沒有 case 語句匹配成功,則不會執(zhí)行任何分支。
使用 | (“ or ”)在一個模式中可以組合多個字面值:
case 401 | 403 | 404: return "Not allowed"
模式的形式類似解包賦值,并可被用于綁定變量:
# point is an (x, y) tuple match point: case (0, 0): print("Origin") case (0, y): print(f"Y={y}") case (x, 0): print(f"X={x}") case (x, y): print(f"X={x}, Y={y}") case _: raise ValueError("Not a point")
請仔細研究此代碼! 第一個模式有兩個字面值,可以看作是上面所示字面值模式的擴展。但接下來的兩個模式結(jié)合了一個字面值和一個變量,而變量 綁定 了一個來自目標的值(point)。第四個模式捕獲了兩個值,這使得它在概念上類似于解包賦值 (x, y) = point。
如果使用類實現(xiàn)數(shù)據(jù)結(jié)構(gòu),可在類名后加一個類似于構(gòu)造器的參數(shù)列表,這樣做可以把屬性放到變量里:
class Point: x: int y: int def where_is(point): match point: case Point(x=0, y=0): print("Origin") case Point(x=0, y=y): print(f"Y={y}") case Point(x=x, y=0): print(f"X={x}") case Point(): print("Somewhere else") case _: print("Not a point")
可在 dataclass 等支持屬性排序的內(nèi)置類中使用位置參數(shù)。還可在類中設(shè)置 __match_args__ 特殊屬性為模式的屬性定義指定位置。如果它被設(shè)為 ("x", "y"),則以下模式均為等價的,并且都把 y 屬性綁定到 var 變量:
Point(1, var) Point(1, y=var) Point(x=1, y=var) Point(y=var, x=1)
讀取模式的推薦方式是將它們看做是你會在賦值操作左側(cè)放置的內(nèi)容的擴展形式,以便理解各個變量將會被設(shè)置的值。 只有單獨的名稱(例如上面的 var)會被 match 語句所賦值。 帶點號的名稱 (例如 foo.bar)、屬性名稱(例如上面的 x= 和 y=)或類名稱(通過其后的 "(...)" 來識別,例如上面的 Point)都絕不會被賦值。
模式可以任意地嵌套。例如,如果有一個由點組成的短列表,則可使用如下方式進行匹配:
match points: case []: print("No points") case [Point(0, 0)]: print("The origin") case [Point(x, y)]: print(f"Single point {x}, {y}") case [Point(0, y1), Point(0, y2)]: print(f"Two on the Y axis at {y1}, {y2}") case _: print("Something else")
為模式添加成為守護項的 if 子句。如果守護項的值為假,則 match 繼續(xù)匹配下一個 case 語句塊。注意,值的捕獲發(fā)生在守護項被求值之前:
match point: case Point(x, y) if x == y: print(f"Y=X at {x}") case Point(x, y): print(f"Not on the diagonal")
match 語句的其他特性:
與解包賦值類似,元組和列表模式具有完全相同的含義,并且實際上能匹配任意序列。 但它們不能匹配迭代器或字符串。序列模式支持擴展解包操作:[x, y, *rest] 和 (x, y, *rest) 的作用類似于解包賦值。 在 * 之后的名稱也可以為 _,因此,(x, y, *_) 可以匹配包含至少兩個條目的序列,而不必綁定其余的條目。映射模式:{"bandwidth": b, "latency": l} 從字典中捕獲 "bandwidth" 和 "latency" 的值。與序列模式不同,額外的鍵會被忽略。**rest 等解包操作也支持。但 **_ 是冗余的,不允許使用。使用 as 關(guān)鍵字可以捕獲子模式:
case (Point(x1, y1), Point(x2, y2) as p2): ...
將把輸入的第二個元素捕獲為 p2 (只要輸入是包含兩個點的序列)
大多數(shù)字面值是按相等性比較的,但是單例對象 True, False 和 None 則是按標識號比較的。
模式可以使用命名常量。 這些命名常量必須為帶點號的名稱以防止它們被解讀為捕獲變量:
from enum import Enum class Color(Enum): RED = "red" GREEN = "green" BLUE = "blue" color = Color(input("Enter your choice of "red", "blue" or "green": ")) match color: case Color.RED: print("I see red!") case Color.GREEN: print("Grass is green") case Color.BLUE: print("I"m feeling the blues :(")
到此這篇關(guān)于Python match語句的具體使用的文章就介紹到這了,更多相關(guān)Python match內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標簽:
據(jù)各方數(shù)據(jù),1月31日上午10時許,深圳出品的動畫電影《熊出沒·伴我熊芯》票房突破10億元,在首日票房、檔期票房、連續(xù)破億天數(shù)等多方面打
1月27日,攜程發(fā)布的《2023年春節(jié)旅游總結(jié)報告》顯示,今年春節(jié),深圳游客的出境游訂單量同比去年增長近5倍。相較國內(nèi)熱門景點的人山人海,
1月27日,記者從深圳市文化廣電旅游體育局獲悉,2023年春節(jié)黃金周期間(1月21日至27日),深圳共接待游客469 25萬人次,旅游收入31 58億元,
據(jù)深圳市春運辦統(tǒng)計,1月15日和16日連續(xù)兩天,深圳對外發(fā)送旅客人數(shù)都在48萬左右,春運進入客流高峰期。1月15日,深圳春運對外旅客發(fā)送量達
新年音樂會是觀眾喜聞樂見的年度重要文化品牌活動,多年來已成為深圳市民跨歲迎新的例牌項目。12月30日、31日晚,深圳交響樂團將在深圳音樂
作為來深科研人員中的一員,中山大學附屬第八醫(yī)院的助理研究員郭雅婕對深圳在人才服務(wù)方面的舉措贊不絕口:我作為基礎(chǔ)研究人員,很希望自己
12月1日晚8點,2023年故宮年票正式開售。相比于去年,今年購票順暢了許多。據(jù)了解,2022年故宮年票發(fā)售時,因短時間內(nèi)購買年票人數(shù)過多,曾
昨日,冷空氣到達,廣州氣溫逐步下降。據(jù)商超方面預測,隨著氣溫的逐漸下降,市民對于御寒類商品消費需求有所上升,不少廣州商超準備了有關(guān)
小井蓋、大民生。今年以來,深圳開展全市窨井蓋專項治理工作成效顯著。截至11月20日,全市共排查窨井蓋約350萬個,發(fā)現(xiàn)存在問題的窨井蓋約3
備受關(guān)注的汕汕(汕頭至汕尾)鐵路汕頭站及站區(qū)工程近日傳出最新動態(tài):項目已順利完成工程招標工作,由中鐵建設(shè)集團有限公司中標承建。目前,
焦點關(guān)注:俯瞰大片!跨海大橋高架路
跨海大橋高架路一期西起膠州灣大橋李村河互通立交,沿李村河、張村河向東蜿蜒7 6公里至海爾路立交橋。自2011年主橋建成通車以來,大大方便了人
聆聽榜樣故事,感受道德力量!青島市
4月21日上午,伴隨著開場快板《陽光路上盡朝暉》的精彩上演,青島市道德模范故事匯基層巡講活動在城陽區(qū)拉開帷幕。來自市、區(qū)和街道的有關(guān)領(lǐng)導
速遞!涉及8處傳統(tǒng)風貌建筑!山西路
為提升城市品質(zhì),推動傳統(tǒng)風貌建筑的活化利用,市南區(qū)政府擬組織實施山西路片區(qū)保護更新工作。4月20日,青島市自然資源和規(guī)劃局發(fā)布《山西路片
福清路家庭醫(yī)生走進新世紀幼兒園 開
半島網(wǎng)4月14日訊(記者孫貼靜實習生王春瑜)兒童是祖國的花朵,是未來的希望。4月12日,在第35個愛國衛(wèi)生月來臨之際,福清路社區(qū)衛(wèi)生服務(wù)中心
青島馬拉松明日開跑,選手和工作人員
2023年青島馬拉松將于4月22日鳴槍開跑比賽當日運動員、裁判員、賽事志愿者和工作人員可免費乘坐地鐵!同時五四廣場站、浮山所站部分出入口臨時
即時焦點:滬深港通交易日歷優(yōu)化下周
實施后,2023年將分別在五一、端午和中秋國慶假期前各新增兩個交易日,2023年港股通首次新增交易日為4月27日、4月28日,滬股通首次新增交
據(jù)介紹,電商MCN機構(gòu)等級體系是抖音電商全新上線的對電商MCN機構(gòu)進行等級評定、并給予不同等級機構(gòu)相應(yīng)權(quán)益激勵的一套體系,激勵電商MCN機構(gòu)不
深圳北站華潤萬象中心開盤賣35億元
深圳2盤近日開盤并透露開盤銷售情況,其中,深圳北站的北站超核萬象中心(二期)4月20日開盤,當天銷售35億元;龍崗大運星龍園4月15日開盤,當
刺勒川
1、敕勒歌北朝樂府敕勒川,陰山下,天似穹廬,籠蓋四野。2、天蒼蒼,野茫茫,風吹草低見牛羊。
環(huán)氧丙烷_關(guān)于環(huán)氧丙烷介紹
環(huán)氧丙烷,關(guān)于環(huán)氧丙烷介紹這個很多人還不知道,我們一起來看看!1、環(huán)氧丙烷,又名氧化丙烯、甲基環(huán)氧乙烷、1,2-環(huán)氧丙烷,是一種有機化合物
全球速看:環(huán)氧乙烷滅菌_關(guān)于環(huán)氧乙
環(huán)氧乙烷滅菌,關(guān)于環(huán)氧乙烷滅菌介紹這個很多人還不知道,我們一起來看看!1、環(huán)氧乙烷滅菌裝置是一次性使用無菌醫(yī)療器械生產(chǎn)企業(yè)的關(guān)鍵設(shè)備,
全球?qū)崟r:山西一季度 GDP 同比增
山西省統(tǒng)計局公布一季度全省經(jīng)濟運行情況,根據(jù)地區(qū)生產(chǎn)總值統(tǒng)一核算結(jié)果,一季度山西全省地區(qū)生產(chǎn)總值為5824 33億元,按不變價格計算,比上年
【世界獨家】NBA彩經(jīng):綠軍再擒老鷹
凱爾特人VS老鷹拿下賽點凱爾特人客場再擒老鷹美國職業(yè)籃球聯(lián)賽凱爾特人VS老鷹(+4 5)推薦:讓分客勝凱爾特人在系列賽的前兩個主場都輕松拿下
看熱訊:證監(jiān)會就澤達易盛案、紫晶存
1 澤達易盛案、紫晶存儲案系科創(chuàng)板首批欺詐發(fā)行案件,社會影響廣泛 如在上述兩案的行政責任方面,我會依法向澤達易盛(天津)科技股份有限公
環(huán)氧乙烷滅菌器_關(guān)于環(huán)氧乙烷滅菌器
環(huán)氧乙烷滅菌器,關(guān)于環(huán)氧乙烷滅菌器介紹這個很多人還不知道,我們一起來看看!1、wi28477環(huán)氧乙烷氣體(亦稱氧化乙烯氣體。2、俗稱EO)是已知
天天消息!全面升級!廣東深化戎歸南
文 圖羊城晚報全媒體記者侯夢菲4月21日下午,廣東省戎歸南粵退役軍人“仁軍保”2023年至2027年合作框架協(xié)議簽約儀式在廣州舉行。省退役軍人事
環(huán)氧七氯_關(guān)于環(huán)氧七氯介紹
環(huán)氧七氯,關(guān)于環(huán)氧七氯介紹這個很多人還不知道,我們一起來看看!1、環(huán)氧七氯主要用于防治地下害蟲、棉花后期害蟲和禾本科作物及牧草害蟲。2、
【報資訊】環(huán)氧乙烷_關(guān)于環(huán)氧乙烷介
環(huán)氧乙烷,關(guān)于環(huán)氧乙烷介紹這個很多人還不知道,我們一起來看看!1、環(huán)氧乙烷是一種有機化合物,化學式是C2H4O,是一種有毒的致癌物質(zhì),以前被
全球速讀:羅定市氣象臺發(fā)布暴雨黃色
受強降雨云系影響,我市加益、泗綸、黎少等鎮(zhèn)出現(xiàn)了短時強降水,預計降雨將持續(xù),羅定市氣象臺4月21日17時27分發(fā)布加益、泗綸、黎少、龍灣、榃
焦點熱議:優(yōu)秀!學校專門為一名學生
優(yōu)秀!學校專門為一名學生辦作業(yè)展
e 簽寶發(fā)布「統(tǒng)一印章平臺」
在功能層面,該平臺能夠幫助企業(yè)實現(xiàn)物理印章、電子印章的一體化全生命周期管理,并通過豐富靈活的openAPI接口,為企業(yè)供應(yīng)鏈采購、經(jīng)銷管理、
四會市氣象臺解除冰雹橙色預警【II級
據(jù)國家突發(fā)事件預警信息發(fā)布網(wǎng):影響大沙鎮(zhèn)、江谷鎮(zhèn)的強雷雨云團減弱移出。四會市氣象臺于2023年04月21日17時35分解除四會市大沙鎮(zhèn)、江谷鎮(zhèn)冰
廣東省肇慶市發(fā)布暴雨黃色預警
過去1小時肇慶新區(qū)出現(xiàn)了30毫米以上強降水,預計未來2小時降水將持續(xù),肇慶市氣象臺于21日16時51分發(fā)布鼎湖區(qū)暴雨黃色預警信號。(預警信息來
訊息:T3 出行發(fā)布 1521 戰(zhàn)略:峰
T3出行CEO崔大勇還透露企業(yè)未來三年發(fā)展目標——「1521」戰(zhàn)略,即到2026年年末,日訂單峰值突破1000萬單,營收達到500億元,全國覆
財務(wù)造假長達 8 年,*ST 奇信被重
非董監(jiān)高也被罰款200萬元,財務(wù)造假長達8年的江西奇信集團股份有限公司(簡稱「*ST奇信」,002781 SZ)被證監(jiān)會重罰 信息披露違法違規(guī)
世界微動態(tài)丨王博:新能源銷量已超25
王博:新能源銷量已超25%,吉利將快速穩(wěn)健推進電動轉(zhuǎn)型,王博,博越,suv,吉利汽車,suv車型
熱門:洗車店墻面漏水,貼隔壁遭殃數(shù)
圖說:洗車店墻面漏水,貼隔壁遭殃數(shù)月來源 采訪對象供圖近日,市民何先生向新民晚報“新民幫儂忙”欄目反映,隔壁洗車店管道
金沙洲是廣州還是佛山_廣州佛山旅游
1、第一名:西樵山2、必游景點佛山是國家5A級景區(qū),以山川秀美著稱,享有嶺南美譽。3、第二名:佛山祖廟4、必游景點佛山是
環(huán)球訊息:廣州番禺下冰雹了!廣東多
文 羊城晚報全媒體記者梁懌韜此前發(fā)布冰雹預警的廣州市番禺區(qū),在4月21日14時許出現(xiàn)冰雹天氣。截至4月21日15時03分,廣東多地發(fā)布冰雹預警。網(wǎng)
今日播報!環(huán)比增幅_關(guān)于環(huán)比增幅介紹
環(huán)比增幅,關(guān)于環(huán)比增幅介紹這個很多人還不知道,我們一起來看看!1、環(huán)比增幅是指與歷史同時期比較。2、例如2005年7月份與2004年7月份相比稱其