千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > Python3.10的新特性

Python3.10的新特性

來(lái)源:千鋒教育
發(fā)布人:wjy
時(shí)間: 2022-06-07 13:41:00 1654580460

  最新的 TIOBE的語(yǔ)言排名Python已經(jīng)榮登榜首,無(wú)容置疑Python已經(jīng)是當(dāng)今最流行的編程語(yǔ)言之一,并且已被廣泛應(yīng)用于各種領(lǐng)域。

最新版Python3.10新特性83

 

  更加令我們興奮的是,經(jīng)過多次 alpha、beta 和 rc 測(cè)試,Python 編程語(yǔ)言終于發(fā)布了 3.10 版本。喜大普奔!

最新版Python3.10新特性152

 

  安裝教程請(qǐng)參照:

  雖然新發(fā)布的3.10你不會(huì)立刻應(yīng)用到你的開發(fā)中,但是這幾點(diǎn)新特性還是讓宋宋禁不住拍手叫好,福音啊!更詳細(xì)的內(nèi)容大家可以參看:https://docs.python.org/3.10/whatsnew/3.10.html

  在此給大家總結(jié)出以下幾點(diǎn):

  新的語(yǔ)法特性有:

  • 模式匹配語(yǔ)法

  • 正式允許帶括號(hào)的上下文管理器

  標(biāo)準(zhǔn)庫(kù)中的新功能有:向 zip 添加可選的長(zhǎng)度檢查

  解釋器改進(jìn):用于調(diào)試和其他工具的精確行號(hào)

  新類型功能:

  • 顯式類型別名

  • 允許將聯(lián)合類型寫為 X | Y

  • 參數(shù)規(guī)范變量

  刪除、棄用與限制:

  • 需要 OpenSSL 1.1.1 或更新版本

  • 棄用 distutils 模塊

  • 棄用并準(zhǔn)備刪除 PyUnicodeObject 中的 wstr 成員

  • 刪除 Py_UNICODE 編碼器 API

  • 添加可選的 EncodingWarning

  但新版本中最為明顯的還要屬下面這幾個(gè):

  • 結(jié)構(gòu)化模式匹配

  • 更加友好的錯(cuò)誤提示

  • 更加嚴(yán)謹(jǐn)?shù)膠ip

  結(jié)構(gòu)化模式匹配

  熟悉 Java,C++的程序員對(duì)于switch和case不會(huì)陌生,但是對(duì)于Python 3.10以前,很遺憾,Python一直沒有類似的語(yǔ)法,不過自從3.10開始Python終于有類似語(yǔ)法了!是 match和case,通用語(yǔ)法格式:

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

  <action_wildcard>

  模式匹配大大增加了控制流的清晰度和表達(dá)能力,比如:

status = int(input('請(qǐng)輸入一個(gè)狀態(tài)碼:'))
match status:
case 400:
print("Bad request")
case 404:
print("Not found")
case 418:
print("I'm a teapot")
case _:
print("Something's wrong with the internet")

  結(jié)果:

  請(qǐng)輸入一個(gè)狀態(tài)碼:404

  Not found

  大家可以發(fā)現(xiàn)跟Java的switch...case是不是很相似啊!

  更加友好的錯(cuò)誤提示

  對(duì)于編程學(xué)習(xí)者,尤其是新手,會(huì)碰到各種各樣的編程錯(cuò)誤,而有些錯(cuò)誤的提示又不友好,甚至有些誤導(dǎo)!

  Python3.9采用了新的Parser,這給3.10更加人性的錯(cuò)誤提示奠定了基礎(chǔ)。3.10進(jìn)行了改進(jìn),這個(gè)改進(jìn)涵蓋了:語(yǔ)法錯(cuò)誤,縮進(jìn)錯(cuò)誤,屬性錯(cuò)誤,名稱錯(cuò)誤等。

  語(yǔ)法錯(cuò)誤:

expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,
            38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6,
some_other_code = foo()

  以前的錯(cuò)誤提示:有語(yǔ)法錯(cuò)誤。還把錯(cuò)誤的行數(shù)說錯(cuò)了,這個(gè)就很誤導(dǎo)了!

File "example.py", line 3
    some_other_code = foo()
                    ^
SyntaxError: invalid syntax

  現(xiàn)在的提示要好多了,會(huì)發(fā)出更多信息錯(cuò)誤:

    expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,
               ^
SyntaxError: '{' was never closed

  大量新的特殊SyntaxError異常消息已被納入。一些最顯著的如下:

  • :塊前缺失

  • 理解目標(biāo)中的無(wú)括號(hào)元組

  • 集合文字中和表達(dá)式之間缺少逗號(hào)

  • 不帶括號(hào)的多種異常類型

  • :字典文字中的缺失值和值

  • try沒有塊except或finally塊

  • 在比較中使用=代替==

  • *在 f 字符串中的用法

  比如:

{x,y for x,y in range(100)}
  File "<stdin>", line 1
    {x,y for x,y in range(100)}
     ^
SyntaxError: did you forget parentheses around the comprehension target?

  縮進(jìn)錯(cuò)誤:

  縮進(jìn)錯(cuò)誤是小白常見錯(cuò)誤,現(xiàn)在有救啦,提示很友好:

>>> def foo():
...    if lel:
...    x = 2
  File "<stdin>", line 3
    x = 2
    ^
IndentationError: expected an indented block after 'if' statement in line 2

  屬性錯(cuò)誤:

  用錯(cuò)了屬性,不僅僅告訴你錯(cuò)誤,有時(shí)還會(huì)你一些可能的選擇,簡(jiǎn)直有點(diǎn)人工智能的味道了。

collections.namedtoplo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?

  命名錯(cuò)誤:

  當(dāng)打印NameError由解釋器引發(fā)時(shí),PyErr_Display() 將在引發(fā)異常的函數(shù)中提供類似變量名稱的建議:

>>> schwarzschild_black_hole = None
>>> schwarschild_black_hole
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'schwarschild_black_hole' is not defined. Did you mean: schwarzschild_black_hole?

  更加嚴(yán)謹(jǐn)?shù)膠ip

  zip打包多個(gè)可迭代對(duì)象,但是也有一個(gè)隱含問題就是如果兩個(gè)可迭代對(duì)象的長(zhǎng)度不一致,zip后丟失較長(zhǎng)的可迭代對(duì)象元素

a=['Jack','Lily','LiLei','Tom']  
b=['a','b','C']                                                            

for i in zip(a,b):
print(i)

'''
  結(jié)果:
  ('Jack', 'a')
  ('Lily', 'b')
  ('LiLei', 'C')
'''

  為了解決這個(gè)問題,zip添加了一個(gè)布爾類型的參數(shù) strict,默認(rèn)為False

zip(*iterables, strict=False)

  當(dāng)其為True時(shí),打包的可迭代對(duì)象長(zhǎng)度不一致時(shí)會(huì)拋異常;當(dāng)為False時(shí),與之前版本的zip完全相同,因此zip是完全向后兼容的。

a=['Jack','Lily','LiLei','Tom']  
b=['a','b','C']                                                            

for i in zip(a,b,strict=True):
print(i)

'''
報(bào)錯(cuò)如下:
 File "C:\Users\running\Desktop\casedemo.py", line 16, in <module>
    for i in zip(a,b,strict=True):
ValueError: zip() argument 2 is shorter than argument 1
'''

 

更多關(guān)于python培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗(yàn),采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,擁有國(guó)內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實(shí)現(xiàn)高薪夢(mèng)想。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
抖音小店怎么做代銷

抖音已經(jīng)成為了一個(gè)非常受歡迎的短視頻應(yīng)用程序,在其中許多用戶都精心打造了自己的小店,用于銷售各種各樣的商品,獲取額外的收入。然而,要想...詳情>>

2023-10-08 15:28:41
怎樣開抖音小店帶貨賺錢

隨著直播帶貨的火熱,越來(lái)越多的人開始嘗試通過抖音小店來(lái)開展帶貨業(yè)務(wù)。抖音小店是抖音直播帶貨的配套,可以讓用戶在購(gòu)買直播中產(chǎn)品時(shí)就實(shí)現(xiàn)購(gòu)...詳情>>

2023-10-08 15:06:36
能不能幫我打開抖音小店店鋪呢怎么弄

抖音小店是近年來(lái)非?;鸨囊粋€(gè)網(wǎng)絡(luò)業(yè)務(wù),也是提供了很多商業(yè)機(jī)會(huì)的平臺(tái)。對(duì)于一個(gè)創(chuàng)業(yè)者而言,開設(shè)抖音小店是一個(gè)不錯(cuò)的選擇。但是,許多小店...詳情>>

2023-10-08 15:01:21
藍(lán)v抖音小店怎么開通店鋪

藍(lán)v抖音小店是一個(gè)非常熱門的電商平臺(tái),它可以讓賣家在抖音上開設(shè)自己的店鋪,從而出售自己的商品。隨著抖音的不斷發(fā)展壯大,越來(lái)越多的賣家希...詳情>>

2023-10-08 14:51:53
抖音小店怎么更改類目名稱

抖音小店是現(xiàn)在非?;馃岬囊环N網(wǎng)店形態(tài),許多小生意也從中獲得了收益。但是隨著經(jīng)營(yíng)時(shí)間的增長(zhǎng),小店也需要對(duì)自己的類目名稱進(jìn)行更改,因?yàn)檫@可...詳情>>

2023-10-08 14:46:50