成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 居然開始抄作業(yè)了,這次抄的是Rust

開發(fā) 后端
眾所周知,Rust有兩樣鎮(zhèn)山之寶,一是安全的內(nèi)存模型,二是模式匹配。在內(nèi)存管理上,Python使用了傳統(tǒng)的垃圾回收的內(nèi)存模型,和Rust沒有多少可比性。隨著Python3.10的發(fā)布,模式匹配被引入到Python中,而且?guī)缀跏峭耆瞻崃薘ust的概念。

[[431840]]

整個(gè)九月份,我都在忙一個(gè)js的項(xiàng)目。因?yàn)楹枚嗄瓴粚慾s,動(dòng)手之前特地找了一些js的資料惡補(bǔ)半天,結(jié)果發(fā)現(xiàn)js越來越像Python了。且不說js從基于原型的面向?qū)ο筠D(zhuǎn)向了基于類的面向?qū)ο螅瑔问穷愋突瘮?shù)組(Typed Arrays)的引入,就讓用慣了NumPy的我喜出望外。另外,js的數(shù)組推導(dǎo)式和裝飾器,也幾乎是完全照抄了Python的作業(yè)。

進(jìn)入十月,Python社區(qū)指導(dǎo)委員會(huì)正式推出了Python3.10,距離上一個(gè)版本發(fā)布,正好過去了一年。記得Python3.9發(fā)布之后沒幾天,我寫過一篇名為《危險(xiǎn)的轉(zhuǎn)變:Python正在從簡明轉(zhuǎn)向臃腫,從實(shí)用轉(zhuǎn)向媚俗》的博文,著實(shí)吐槽了一番,正所謂愛之也深恨之也切。這次新版本發(fā)布,我自然不會(huì)放過嘗鮮的機(jī)會(huì),趕緊安裝嘗試了一下,卻發(fā)現(xiàn),一向特立獨(dú)行的Python居然開始抄作業(yè)了,這次抄的是Rust。

眾所周知,Rust有兩樣鎮(zhèn)山之寶,一是安全的內(nèi)存模型,二是模式匹配。在內(nèi)存管理上,Python使用了傳統(tǒng)的垃圾回收的內(nèi)存模型,和Rust沒有多少可比性。隨著Python3.10的發(fā)布,模式匹配被引入到Python中,而且?guī)缀跏峭耆瞻崃薘ust的概念。Rust支持模式匹配中的變量綁定、結(jié)構(gòu)體/元組解構(gòu)、守衛(wèi)條件判斷、數(shù)值范圍匹配等特性,Python照單全收,連下劃線 _ 匹配任意情形也原封不動(dòng)地繼承了過來。

讓我們一起來揭開Pyhton3.10最重要的升級(jí)——模式匹配的蓋頭。

類似C語言的switch case, Python的模式匹配最簡單的應(yīng)用就是對(duì)字面值進(jìn)行匹配:

  1. >>> a = 3 
  2. >>> match(a): 
  3.     case 1: 
  4.         print("a == 1"
  5.     case 2: 
  6.         print("a == 2"
  7.     case _:        # default 
  8.         print("other"
  9.  
  10. other 

case語句中,支持或操作:

  1. >>> import datetime 
  2. >>> n = datetime.datetime.now() 
  3. >>> match(n.weekday()): 
  4.     case 0|1|2|3|4: print("工作日"
  5.     case 5|6: print("周末"
  6.  
  7. 工作日 

除了字面值外,case語句,支持對(duì)上面提到的模式進(jìn)行解構(gòu),如對(duì)元組:

  1. >>> a = (0, 1) 
  2. >>> match(a): 
  3.     case (0, y):  # 匹配所有第0個(gè)元素是0的元組 
  4.         print(f"a[0]==0, a[1]=={y}"
  5.     case (x, 0):  # 匹配所有第1個(gè)元素是0的元組 
  6.         print(f"a[1]==0, a[0]=={x}"
  7.  
  8. a[0]==0, a[1]==1 

對(duì)列表:

  1. >>> cmd = "ls test" 
  2. >>> match(cmd.split()): 
  3.     case ["ls", path]: print(f"顯示{path}中的文件和目錄"
  4.     case ["rm", path]: print(f"刪除{path}中的文件和目錄"
  5.     case ["cp", src, dest]: print(f"將{src}復(fù)制到{dest}"
  6.  
  7. 顯示test中的文件和目錄 

對(duì)字典:

  1. >>> a = {"name""xxx""age": 40, "job""程序員"
  2. >>> match(a): 
  3.     case {"name"name"age": age, "job""程序員"}: 
  4.         print(f"他是一名程序員,名字叫{name}, {age}歲了"
  5.     case {"name"name"age": age, "job""教師"}: 
  6.         print(f"他是一名人民教師,名字叫{name}, {age}歲了"
  7.  
  8. 他是一名程序員,名字叫xxx, 40歲了 

對(duì)于類對(duì)象,match case照樣可以使用如:

  1. >>> class Point(): 
  2.     def __init__(self,x,y): 
  3.         self.x = x 
  4.         self.y = y 
  5.  
  6. >>> a = Point(1, 2) 
  7. >>> match(a): 
  8.     case Point(x=1, y=y): print(f"這是一個(gè)X坐標(biāo)為1的點(diǎn),它的Y坐標(biāo)為{y}"
  9.     case Point(x=x, y=2): print(f"這是一個(gè)Y坐標(biāo)為2的點(diǎn),它的X坐標(biāo)為{x}"
  10.  
  11. 這是一個(gè)X坐標(biāo)為1的點(diǎn),它的Y坐標(biāo)為2 

也可以用于多個(gè)類:

  1. >>> class Programmer: 
  2.     def __init__(self, lang): 
  3.         self.lang = lang 
  4.  
  5.  
  6. >>> class Teacher: 
  7.     def __init__(self, subject): 
  8.         self.subject = subject 
  9.  
  10. >>> a = Programmer("Python"
  11. >>> match(a): 
  12.     case Programmer(lang="Python"): print("咱們都是Pyhon程序員!"
  13.     case Programmer(): print("原來你也是一名程序員!"
  14.     case Teacher(): print("向人民教師致敬!"
  15.  
  16. 咱們都是Pyhon程序員! 

case 語句后,還支持添加一個(gè)if語句,進(jìn)一步對(duì)匹配的條件進(jìn)行限制,這個(gè)if語句,被稱之為“守衛(wèi)”。如:

  1. >>> class Point(): 
  2.     def __init__(self,x,y): 
  3.         self.x = x 
  4.         self.y = y 
  5.  
  6.  
  7. >>> a = Point(2,2) 
  8. >>> match(a): 
  9.     case Point(x=x, y=y) if x==y: print("這個(gè)點(diǎn)在斜率為1的直線上"
  10.     case Point(x=x, y=y) if x==-y: print("這個(gè)點(diǎn)在斜率為-1的直線上"
  11.  
  12. 這個(gè)點(diǎn)在斜率為1的直線上 

美中不足的是,我沒有找到case語句中直接使用范圍的方法,但這個(gè)可以用守衛(wèi)來解決:

  1. >>> a = 5 
  2. >>> match(a): 
  3.     case x if 1 <= x < 10: print("數(shù)字在1和10之間"
  4.     case x if 10 <= x < 20: print("數(shù)字在10和20之間"
  5.  
  6. 數(shù)字在1和10之間 

 

責(zé)任編輯:武曉燕 來源: Python作業(yè)輔導(dǎo)員
相關(guān)推薦

2024-11-21 15:29:34

2012-01-13 16:00:05

愛國者馮軍蘋果

2013-01-15 09:58:11

谷歌移動(dòng)應(yīng)用蘋果

2021-10-21 06:39:41

限流熔斷系統(tǒng)

2020-09-24 12:32:41

微軟開發(fā) AI

2025-02-26 07:40:25

運(yùn)營分析體系運(yùn)營策略

2014-11-24 13:30:47

蘋果設(shè)計(jì)

2011-04-15 09:14:03

抄襲巨頭IT

2020-12-29 09:23:40

分庫分表訂單

2011-09-15 12:13:42

喬布斯蘋果

2022-04-19 16:07:26

iOS蘋果安卓

2014-07-16 09:15:44

Android LiOS 8WP8.1

2025-06-26 01:25:00

2015-11-02 10:18:54

日志RedstoneWindows 10

2020-09-15 16:01:28

無線數(shù)傳模塊

2024-05-21 08:40:21

分庫分表源碼

2025-05-21 08:53:00

2015-08-05 10:39:54

知乎整理騰訊

2021-06-09 11:28:04

用戶畫像標(biāo)簽

2022-12-28 11:44:19

用戶畫像互聯(lián)網(wǎng)用戶信息
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 9191成人精品久久 | 一级视频黄色 | 亚洲国产高清高潮精品美女 | 涩涩视频在线播放 | 大象视频一区二区 | 亚洲一区二区三区在线播放 | 欧美一区二区三区久久精品视 | 在线视频99 | 中文字幕av亚洲精品一部二部 | 九色 在线 | 天天夜干 | 久久亚洲国产精品日日av夜夜 | 亚洲二区在线 | 国产精品一区久久久久 | 国产在线精品一区二区三区 | 中文区中文字幕免费看 | 亚洲视频一区二区三区四区 | 欧美在线亚洲 | 久久成人国产精品 | 91porn成人精品 | 一区二区福利视频 | 韩日三级 | 国产精品一级 | 午夜激情视频 | 91在线一区二区三区 | 亚洲 欧美 日韩 在线 | 欧美日韩在线综合 | 欧美精品三区 | 成人精品免费视频 | 日韩中文视频 | 亚洲一区二区三区四区五区中文 | 2022国产精品 | 成人在线视频网址 | 国产精品久久久亚洲 | 日韩欧美网 | 日韩精品无码一区二区三区 | 亚洲精品91 | 人人干人人干人人干 | 国产精品久久久久久久粉嫩 | 日本视频免费 | 97久久久|