女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python3.6-3.10新特性介紹

roborobo_0706 ? 來源:由由學習吧 ? 2023-02-15 16:43 ? 次閱讀

(一)首先是第一個f格式化字符串,之前基礎篇講過,我們可以通過f和{}來作為格式化字符串的占位符,比如:

ee50abc8-ad0a-11ed-bfe3-dac502259ad0.png

或者使用占位符描述長度和保留位數,比如:

ee648d5a-ad0a-11ed-bfe3-dac502259ad0.png

(二)然后是數字下劃線,數字使用下劃線可以方便閱讀,不影響原有類型,比如:

ee78c036-ad0a-11ed-bfe3-dac502259ad0.png

對于16進制,8進制,二進制也是可以的

eea7d0ce-ad0a-11ed-bfe3-dac502259ad0.png

字符串format方法也支持了“_”的選項,當格式化為浮點數或整數時,以3位分隔,當格式化為二進制,八進制,十六進制時,以4位分隔

eed0f3c8-ad0a-11ed-bfe3-dac502259ad0.png

(三)變量注釋沒有給變量帶來特殊的意義,只是為了方便IDE做類型檢查

eefaba1e-ad0a-11ed-bfe3-dac502259ad0.png

只是起注釋作用,實際意義不大

ef29e4ce-ad0a-11ed-bfe3-dac502259ad0.png

(四)異步生成器在Python3.5中,協程函數await和yield不能再同一個函數中使用,但是Python3.6已經取消了這個限制,可以在同一個函數體中使用了

1.await是一個關鍵字,只能在協程函數中使用,在遇到IO操作時暫停當前協程(任務)。

2、在暫停當前協程(任務)的過程中,事件循環可以執行其他協程(任務),在當前協程的IO處理完成后,可以再次切換執行的代碼。


使用方法

await + 可等待對象(協程對象、Future對象、Task對象)


例如:

import asyncio
async def func():
 print("執行協程函數內部代碼")
 # 遇到IO操作掛起當前協程(任務),等IO操作完成之后再繼續往下執行。
 # 當前協程掛起時,事件循環可以去執行其他協程(任務)。
 response = await asyncio.sleep(2)
 print("IO請求結束,結果為:", response)
result = func()
asyncio.run(result)

現在生成器和協程函數可以共用了,比如:

ef3935b4-ad0a-11ed-bfe3-dac502259ad0.png

(五)增加在list、set和dict的列表推導和生成表達式中使用async for,async/await 是python3的新特性,可以進行協程運行。個人將他理解成多線程

使用異步推導式之后,可以簡寫成

result = [i async for i in liyou() if i % 3]

現在也支持在所有的推導式中使用await表達式

result = [await liyou() for liyou in liyous]

(六)增加了一個新的模塊:secrets。該模塊用來生成一些安全性更高的隨機數,用于管理passwords, account authentication, security tokens, 以及related secrets等數據,因為python(大部分解析器是cpython,底層隨機化是隨機數,可以通過種子判斷出隨機規律,使用secrets解決了這個問題,使得安全性得到了提高)。

(七)其他

新的堆內存分配環境變量允許開發者設置內存分配器,以及注冊debug鉤子等。

asyncio模塊更加穩定、高效,并且不再是臨時模塊,其中的API也都是穩定版的了。

typing模塊也有了一定改進,并且不再是臨時模塊。

datetime.strftime 和 date.strftime 開始支持ISO 8601的時間標識符%G, %u, %V。

hashlib 和 ssl 模塊開始支持OpenSSL1.1.0。

hashlib模塊開始支持新的hash算法,比如BLAKE2, SHA-3 和 SHAKE。

Windows上的 filesystem 和 console 默認編碼改為UTF-8。

json模塊中的 json.load() 和 json.loads() 函數開始支持 binary 類型輸入。

Python3.7

1、內置函數breakpoint()

2、類型和注解

3、新增dataclasses模塊

4、生成器異常處理

5、開發模式

6、高精度時間函數

7、新特性

(一)使用breakpoint()可以方便我們使用pdb調試python代碼,在 pdb 提示符下,我們可以調用locals()來查看當前的本地作用域的所有變量,找到問題所在地方。

(二)類型和注解,和變量注釋差不多,方便描述,比如:

ef62b9f2-ad0a-11ed-bfe3-dac502259ad0.png

(三)引入了一個新的模塊dataclasses,該模塊主要提供了一種數據類的實現方式。

優點是:

1. 無需定義__init__,然后將值賦給self,dataclass負責處理它

2. 我們以更加易讀的方式預先定義了成員屬性,以及類型提示。我們現在立即能知道number是int類型。這無疑比一般定義類成員的方式更具可讀性。

比如:

ef8e2eb6-ad0a-11ed-bfe3-dac502259ad0.png

在數據類被定義后,會根據給出的類型注解生成一個如下的初始函數:

ef9ed9dc-ad0a-11ed-bfe3-dac502259ad0.png

是不是很方便,節約了大量時間了

(四)生成器引發StopIteration異常后,StopIteration異常轉換RuntimeError異常,它不會影響應用程序的堆??蚣堋?/p>

(五)Python解釋器命令行添加了開發者模式,參數是-X,他激活的內容有asyncio的調試模式。為異步操作提供更詳細的日志記錄和異常處理。以及面向內存分配器的調試hook。這對于編寫CPython擴展件的那些人很有用。它能夠實現更明確的運行時檢查,了解CPython如何在內部分配內存和釋放內存。啟用faulthandler模塊,那樣發生崩潰后,traceback始終轉儲出去。

(六)新的時間函數使用后綴_ns。比如,time.process_time()的納秒版本是time.process_time_ns()

(七)其他

字典現在保持插入順序。這在 3.6 中是非正式的,但現在成為了官方語言規范。在大多數情況下,普通的dict能夠替換collections.OrderedDict。

.pyc文件具有確定性,支持可重復構建 —— 也就是說,總是為相同的輸入文件生成相同的 byte-for-byte 輸出。

新增contextvars模塊,針對異步任務提供上下文變量。

__main__中的代碼會顯示棄用警告(DeprecationWarning)。

新增UTF-8模式。在Linux/Unix系統,將忽略系統的locale,使用UTF-8作為默認編碼。在非Linux/Unix系統,需要使用-X utf8選項啟用UTF-8模式。

允許模塊定義__getattr__、__dir__函數,為棄用警告、延遲import子模塊等提供便利。

新的線程本地存儲C語言API。

更新Unicode數據到11.0。

Python3.8

1、海象賦值表達式

2、僅限位置形參

3、f格式化字符串支持=

4、 typing模塊的改進

5、多進程共享內存

6、 新版本的pickle協議

7、 性能改進

(一)新的語法:= (有點碰瓷go語言,哈哈,不過用法不太一樣)他會先進行賦值,然后再進行比較,這樣比較方便,避免了兩次循環了,比如:

efc006ca-ad0a-11ed-bfe3-dac502259ad0.png

(二)新增一個函數形參語法/用來指明某些函數形參必須使用僅限位置而非關鍵字參數的形式,比如:

f0013636-ad0a-11ed-bfe3-dac502259ad0.png

(三)f的格式化字符串可以使用等號=,比如:

f04e90ca-ad0a-11ed-bfe3-dac502259ad0.png

(四)Python 3.8給typing添加了一些新元素,因此它能夠支持更健壯的檢查:

1、final修飾器和Final類型標注表明,被修飾或被標注的對象在任何時候都不應該被重寫、繼承,也不能被重新賦值。

2、Literal類型將表達式限定為特定的值或值的列表。

3、TypedDict可以用來創建字典,其特定鍵的值被限制在一個或多個類型上。注意這些限制僅用于編譯時確定值的合法性,而不能在運行時進行限制。

(五)multiprocessing模塊新增SharedMemory類,可以在不同的Python進城之間創建共享的內存區域。

1、在舊版本的Python中,進程間共享數據只能通過寫入文件、通過網絡套接字發送,或采用Python的pickle模塊進行序列化等方式。共享內存提供了進程間傳遞數據的更快的方式,從而使得Python的多處理器和多內核編程更有效率。

2、共享內存片段可以作為單純的字節區域來分配,也可以作為不可修改的類似于列表的對象來分配,其中能保存數字類型、字符串、字節對象、None對象等一小部分Python對象。

(六)Python的pickle模塊提供了一種序列化和反序列化Python數據結構或實例的方法,可以將字典原樣保存下來供以后讀取。不同版本的Python支持的pickle協議不同,而3.8版本的支持范圍更廣、更強大、更有效的序列化。Python 3.8引入的第5版pickle協議可以用一種新方法pickle對象,它能支持Python的緩沖區協議,如bytes、memoryviews或Numpy array等。新的pickle避免了許多在pickle這些對象時的內存復制操作。NumPy、Apache Arrow等外部庫在各自的Python綁定中支持新的pickle協議。新的pickle也可以作為Python 3.6和3.7的插件使用,可以從PyPI上安裝。

(七)許多內置方法和函數的速度都提高了20%~50%,因為之前許多函數都需要進行不必要的參數轉換。

1、一個新的opcode緩存可以提高解釋器中特定指令的速度。但是,目前實現了速度改進的只有LOAD_GLOBAL opcode,其速度提高了40%。以后的版本中也會進行類似的優化。

2、文件復制操作如shutil.copyfile()和shutil.copytree()現在使用平臺特定的調用和其他優化措施,來提高操作速度。

3、新創建的列表現在平均比以前小了12%,這要歸功于列表構造函數如果能提前知道列表長度的情況下,可以進行優化。

4、Python 3.8中向新型類(如class A(object))的類變量中的寫入操作變得更快。operator.itemgetter()和collections.namedtuple()也得到了速度優化。

Python3.9

1、字典并集和可迭代更新

2、字符串方法

3、類型提示

4、新的數學函數

5、新的解析器

6、IPv6范圍內的地址

7、新模塊:區域信息

8、其他語言更改

(一)加入了合并運算符|(也就是管道符的那個鍵),可以使用這些運算符進行合并和更新,比如:

f0ad3bac-ad0a-11ed-bfe3-dac502259ad0.png

(二)removeprefix()和removesuffix()

str.removeprefix(substring:string)字符串方法:如果str以它開頭的話,將會返回一個修改過前綴的新字符串,否則它將返回原始字符串。

str.removesuffix(substring:string)字符串方法:如果str以其結尾,則返回帶有修改過后綴的新字符串,否則它將返回原始字符串。

(三)無需從typing.List來調用List,內置集合類型(List和Dict)用作泛型類型,比如:

f109883a-ad0a-11ed-bfe3-dac502259ad0.png

->為函數添加元數據,描述函數的返回類型,從而方便開發人員使用,這里表示函數無返回值

(四)math模塊中第一個新添加的是math.lcm函數:

math.lcm(4, 8, 5)

math.lcm計算其參數的最小公倍數。與GCD一樣,它允許可變數量的參數。

(五)Python 3.9使用了一個新的基于PEG的解析器(在使用pyinstaller靜態編譯的時候本機可用,但是經常在低版本系統:win7等會提示缺少動態庫的問題,丟失dll文件)

(六)可以指定IPv6地址的范圍,比如:

f16f0b42-ad0a-11ed-bfe3-dac502259ad0.png

(七)zoneinfo模塊將IANA時區數據庫的支持引入標準庫。它添加了zoneinfo.ZoneInfo,這是一個由系統時區數據支持的具體的datetime.tzinfo實現。

(八)引入了幾個新的內置函數,包括range、tuple、set、frozenset、list、dict ——使用vectorcall可以加快執行速度。__import __()現在增加了ImportError以替代ValueError,通常在相對導入超出其頂級包時發生。“”.replace(“”,s,n)現在對于所有非零n返回s而不是空字符串。現在它與““ .replace(”“,s)相一致。

Python3.10

1、類型檢查改進

2、類型別名更改

3、二進制表示中的頻率為1的數量統計

4、準備棄用Distutils內置庫

5、字典增加mapping屬性

6、函數zip()增加strict參數

7、模板匹配

8、支持 switch語法

(一)Python3.10版本中,聯合運算符使用"|"線來代替了舊版本中的Union[]方法,使得程序更加簡潔,不僅如此, Python3.10在一些內置函數中,同樣可以利用"|"線的聯合運算符來提升程序的性能


f1a0a800-ad0a-11ed-bfe3-dac502259ad0.png

(二)Python3.10版本中,則通過 TypeAlias 來規定了類型名字的替換。這樣操作的優勢在于能夠讓程序開發人員和Python編輯器更加清楚的知道newname是一個變量名還是一個類型的別名,提升程序開發的可靠性。

f1c7a6d0-ad0a-11ed-bfe3-dac502259ad0.png

(三)在Python3.10版本中,可以通過調用bit_count函數來統計二進制中數字“1"的個數,當然,在舊版本中,也可以通過很簡單的代碼實現這個功能。

f1f7cb62-ad0a-11ed-bfe3-dac502259ad0.png

(四)由于Distutils庫的功能已經被此setuptools和package庫取代了,所以本著簡潔性的原則,Distutils在不久的將來將會被完全的刪除掉。

f21ea048-ad0a-11ed-bfe3-dac502259ad0.png

(五)在Python3.10中,針對于字典的三個方法,items, keys和values都增加了一個新的"mapping"屬性,通過下述的程序可以發現,對三個方法調用mapping屬性后都會返回原字曲數據。

f24a29f2-ad0a-11ed-bfe3-dac502259ad0.png

(六)Python3.10中對于zip函數添加了strict參數, 顧名思義,strict參數就是要嚴格的遵守參數長度的匹配原則,下述程序中,keys和values列表的長度并不一致。舊版本的zip函數會根據長度最短的參數來創建字典。新版本的zip函數中, 當設定strict參數設置為True時, 則要求zip的輸入參數必須要長度一致,否則就合報錯。

f271ac7a-ad0a-11ed-bfe3-dac502259ad0.png

(七)Python 3.10引入了結構化的模式匹配,通過match...case關鍵詞來完成,可以匹配字典,類以及其他更復雜的結構。match...case的模式匹配,在使用的方式上與C++中的switch有很多的相似之處。

f2a03e46-ad0a-11ed-bfe3-dac502259ad0.png

(八)switch語句

由 match 關鍵詞和 case 語句組成。通用語法如下:

match subject:

case :

case :

case _:

(九)優化了報錯模式,對排查錯誤的時候更加準確定位






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符串
    +關注

    關注

    1

    文章

    589

    瀏覽量

    21081
  • 生成器
    +關注

    關注

    7

    文章

    322

    瀏覽量

    21655
  • C++語言
    +關注

    關注

    0

    文章

    147

    瀏覽量

    7217
  • python
    +關注

    關注

    56

    文章

    4823

    瀏覽量

    86116

原文標題:python3.6-3.10新特性一覽

文章出處:【微信號:ExASIC,微信公眾號:ExASIC】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    IPython的特性介紹及使用技巧

    【導語】:IPython 是一個 Python的交互式shell,比默認的 Python shell好用得多。它有許多好用的特性,本文將對一些特性進行
    發表于 10-14 11:58 ?1803次閱讀
    IPython的<b class='flag-5'>特性</b><b class='flag-5'>介紹</b>及使用技巧

    魯班貓0 安裝python-pip

    我安裝了魯班貓to Ubuntu 22.04.2 LTS (GNU/Linux 4.19.232 aarch64)這個系統已經安裝好了python3.10但是沒有安裝pip,為了方便以后的開發安裝
    發表于 04-06 13:34

    【芒果派MangoPi MQ Pro】+ 失敗的Python 3嘗試

    感謝電子發燒友論壇和芒果派。上次介紹了環境的安裝,這次來嘗試一下Python編程。本次評測本來的目標就是用開發板連接訊飛星火大數據模型,訊飛星火提供的接口是Python的,而芒果派MQ Pro安裝
    發表于 07-28 19:44

    使用Python3.10安裝Openvino-Dev Pip包失敗了是為什么?

    : legacy-install-failure × Encountered error while trying to install package. ╰─> numpy 分辨率OpenVINO? Toolkit 2022.2 僅在 Windows* 上支持 Python* 版本
    發表于 08-15 07:18

    Python輸出更整潔:PrettyPrinter

    PrettyPrinter是Python 3.6 及以上版本中的一個功能強大、支持語法高亮、描述性的美化打印包。
    的頭像 發表于 03-17 09:04 ?7689次閱讀
    讓<b class='flag-5'>Python</b>輸出更整潔:PrettyPrinter

    Python3.6零基礎入門與實戰PDF電子書免費下載

    隨著大數據技術的發展及Python在人工智能領域的火熱應用,Python得到越來越多的應用。本書就是在這個背景下編寫的,是一本Python3.6入門教材,特別適合想直接切入爬蟲編程及大數據分析處理的讀者學習使用。本書贈送示例源代
    發表于 09-19 11:54 ?174次下載

    使用Python操作excel表格的xlrd介紹

    本文檔的主要內容詳細介紹的是使用Python操作excel表格的xlrd介紹
    發表于 07-02 08:00 ?2次下載

    四個有趣的關于Python 3.9版本新特性

    四個有趣的關于Python 3.9版本新特性
    的頭像 發表于 10-08 14:47 ?3240次閱讀
    四個有趣的關于<b class='flag-5'>Python</b> 3.9版本新<b class='flag-5'>特性</b>

    Python語言介紹及開發環境

    Python語言介紹及開發環境說明。
    發表于 04-26 09:51 ?11次下載

    介紹python列表的邊界和嵌套

    本文介紹python列表的邊界和嵌套。只能訪問python列表范圍內的項,python列表可以嵌套python列表。
    的頭像 發表于 02-27 14:49 ?1124次閱讀

    介紹Python中文件創建與寫入的基本方法

    Python 文件寫入和創建是 Python 開發中必須掌握的技能之一。在本文中,我們將介紹 Python 中文件創建與寫入的基本方法
    的頭像 發表于 04-27 09:22 ?3584次閱讀

    Python常用的幾個命令介紹

    Python是一種功能強大的編程語言,廣泛用于數據分析、人工智能和Web開發等領域。在使用Python時,需要掌握一些基本的命令,以便更好地管理和運行代碼。下面將介紹Python常用的
    的頭像 發表于 06-21 17:12 ?2683次閱讀

    zip():Python 中最好用的內置類型之一

    之迭代器模式 》中簡單地介紹過它,前幾天翻譯了 Python 3.10 采納的 PEP-618 ,介紹了它將會迎來的變更。 但是,還有不少同學并不知道 zip(),或者不能熟練掌握它的
    的頭像 發表于 10-30 14:21 ?3599次閱讀
    zip():<b class='flag-5'>Python</b> 中最好用的內置類型之一

    Python3.10.0的特性介紹

    Python3.10.0有幾個特性,還真是值得和大家講講。 1. 更友好的錯誤提示 Python 3.10以前,它是這樣提示的,你可能完全不知道哪里有問題,當代碼過多。 print (
    的頭像 發表于 10-31 10:43 ?726次閱讀
    <b class='flag-5'>Python</b>3.10.0的<b class='flag-5'>特性</b><b class='flag-5'>介紹</b>

    微軟:VSCode決定放棄Python 3.7

    Python 3.7 的受歡迎程度還相當巨大。根據三方數據統計,在使用 Python 3.X 的網站當中,許有 17.2% 使用 Python 3.7。而已經于 2021 年終止生命周期的 P
    的頭像 發表于 10-31 16:43 ?1163次閱讀
    微軟:VSCode決定放棄<b class='flag-5'>Python</b> 3.7