国产成+人+综合+亚洲 欧美-国产成+人+综合+亚洲专-国产成+人欧美+综合在线观看-国产成a人片在线观看视频-国产成a人片在线观看视频99-国产成a人片在线观看视频下载

您現在所在的位置:首頁 >關于奇酷 > 行業動態 > Python 3.11 正式版發布了

Python 3.11 正式版發布了

來源:奇酷教育 發表于:

Python 3 11 正式版發布了

  Error Tracebacks
 
  Python 這門編程語言對初學者非常友好,它具有易于理解的語法和強大的數據結構。但對于剛剛接觸 Python 的人來說卻存在一個難題,即如何解釋當 Python 遇到錯誤時顯示的 traceback。
 
  Python 3.11 將 Decorative annotation 添加到 tracebacks 中,以幫助用戶更快地解釋錯誤消息。想要獲得這種功能,可以將以下代碼添加到 inverse.py 文件中。

 
  舉例來說,你可以使用 inverse() 來計算一個數的倒數。因為 0 沒有倒數,所以在運行下列代碼時會拋出一個錯誤。
 
  注意嵌入在 traceback 中的 ^ 和~ 符號,它們指向導致錯誤的代碼。與此前的 tracebacks 一樣,你應該從底層開始,然后逐步向上。這種操作對發現錯誤非常有用,但如果代碼過于復雜,帶注釋的 tracebacks 會更好。
 
  更快的代碼執行
 
  Python 以速度慢著稱,例如在 Python 中,常規循環比 C 中的類似循環慢幾個數量級。
 
  Python 官方正在著手改進這一缺陷。2020 年秋,Mark Shannon 提出了關于 Python 的幾個性能改進。這個提議被稱為香農計劃 (Shannon Plan),他們希望通過幾個版本的更新將 Python 的速度提高 5 倍。不久之后微軟正式加入該計劃,該公司正在支持包括 Mark Shannon、Guido van Rossum 在內的開發人員,致力于「Faster CPython」項目的研究。
 
  「Faster CPython」項目中的一個重要提案是 PEP 659,在此基礎上,Python 3.11 有了許多改進。
 
  PEP 659 描述了一種「specializing adaptive interpreter」。主要思想是通過優化經常執行的操作來加快代碼運行速度, 這類似于 JIT(just-in-time)編譯。只是它不影響編譯,相反,Python 的字節碼是動態調整或可更改的。
 
  
 
  研究人員在字節碼生成中添加了一個名為「quickening」的新步驟,從而可以在運行時優化指令,并將它們替換為 adaptive 指令。
 
  一旦函數被調用了一定次數,quickening 指令就會啟動。在 CPython 3.11 中,八次調用之后就會啟動 quickening。你可以通過調用 dis() 并設置 adaptive 參數來觀察解釋器如何適應字節碼。
 
  在基準測試中,CPython 3.11 比 CPython 3.10 平均快 25%。Faster CPython 項目是一個正在進行的項目,已經有幾個優化計劃在 2023 年 10 月與 Python 3.12 一起發布。你可以在 GitHub 上關注該項目。Python 3.12 目標:還可以更快!
 
  項目地址:https://github.com/faster-cpython/ideas
 
  更好的異步任務語法
 
  Python 中對異步編程的支持已經發展了很長時間。Python 2 時代添加了生成器,asyncio 庫最初是在 Python 3.4 中添加的,而 async 和 await 關鍵字是在 Python 3.5 中添加的。在 Python 3.11 中,你可以使用任務組(task groups),它為運行和監視異步任務提供了更簡潔的語法。
 
  改進的類型變量
 
  Python 是一種動態類型語言,但它通過可選的類型提示支持靜態類型。Python 靜態類型系統的基礎在 2015 年的 PEP 484 中定義。自 Python 3.5 以來,每個 Python 版本都引入了幾個與類型相關的新提案。
 
  Python 3.11 發布了 5 個與類型相關的 PEP,創下新高:
 
  PEP 646: 可變泛型
 
  PEP 655: 根據需要或可能丟失的情況標記單個 TypedDict 項
 
  PEP 673: Self 類型
 
  PEP 675: 任意文字字符串類型
 
  PEP 681: 數據類轉換
 
  支持 TOML 配置解析
 
  TOML 是 Tom's Obvious Minimal Language 的縮寫。這是一種在過去十年中流行起來的配置文件格式。在為包和項目指定元數據時,Python 社區已將 TOML 作為首選格式。
 
  雖然 TOML 已被使用多年,但 Python 并沒有內置的 TOML 支持。當 tomllib 添加到標準庫時,Python 3.11 中的情況發生了變化。這個新模塊建立在 toml 第三方庫之上,允許解析 TOML 文件。
 
  以下是名為 units.toml 的 TOML 文件示例:
 
  
 
  其他功能
 
  除了以上主要更新和改進之外,Python 3.11 還有更多值得探索的功能,比如更快的程序啟動速度、對異常的更多改變以及對字符串格式的小幅改進。
 
  更快的程序啟動速度
 
  Faster CPython 項目的一大成果是實現了更快的啟動時間。當你運行 Python 腳本時,解釋器初始化需要一些操作。這就導致即便是最簡單的程序也需要幾毫秒才能運行。
 
  
 
  在很多情況下,與運行代碼所需時間相比,啟動程序需要的時間可以忽略不計。但是在運行時間較短的腳本中,如典型的命令行應用程序,啟動時間可能會顯著影響程序性能。比如考慮如下腳本,它受到了經典 cowsay 程序的啟發。

  
  在 snakesay.py 中,你從命令行讀取一條消息,然后將這條消息打印在帶有一條可愛蛇的對話氣泡中。你可以讓蛇說任何話。這是命令行應用程序的基本示例,它運行得很快,但仍需要幾毫秒。這一開銷的很大部分發生在 Python 導入模塊時。

  
  你可以使用 - X importtime 選項來顯示導入模塊所用的時間。表中的數字為微秒為單位,最后一列是模塊名稱的格式。

  
  該示例分別運行在 Python 3.11 和 3.10 上,結果如下圖所示,Python 3.11 的導入速度更快,有助于 Python 程序更快地啟動。
 
  
 
  零成本異常
 
  異常的內部表示在 Python 3.11 中有所不同。異常對象更輕量級,并且異常處理發生了變化。因此只要不觸發 except 字句,try … except 塊中的開銷就越小。
 
  所謂的零成本異常受到了 C++ 和 Java 等其他語言的啟發。當你的源代碼被編譯為字節碼時,編譯器創建跳轉表,由此來實現零成本異常。如果引發異常,查詢這些跳轉表。如果沒有異常,則 try 塊中的代碼沒有運行時開銷。
 
  異常組
 
  此前,你了解到了任務組以及它們如何同時處理多個錯誤。這都要歸功于一個被稱為異常組的新功能。
 
  我們可以這樣考慮異常組,它們是包裝了其他幾種常規異常的常規異常。雖然異常組在很多方面表現得像常規異常,但它們也支持特殊語法,幫助你有效地處理每個包裝異常。如下所示,你可以通過給出一個描述并列出包裝的異常來創建一個異常組。
 
  
 
  異常 Notes
 
  常規異常具有添加任意 notes 的擴展能力。你可以使用. add_note() 向任何異常添加一個 note,并通過檢查.__notes__屬性來查看現有 notes。

  
  負零格式化
 
  使用浮點數進行計算時可能會遇到一個奇怪概念——負零。你可以觀察到負零和 regular zero 在 REPL 中呈現不同,如下所示。

  
  更多關于 Python 3.11 的更新細節請參閱原文檔。
 
  原文:https://realpython.com/python311-new-features
主站蜘蛛池模板: 97午夜精品 | 免费看欧美一级特黄a大片一 | 完整日本特级毛片 | 日本伊人色综合网 | 亚洲国产欧美日韩一区二区三区 | 一级特黄aaa大片 | 亚洲一区二区三区不卡在线播放 | 在线播放 亚洲 | 日本精品在线视频 | 欧美日本另类xxx乱大交 | 成年网站视频在线观看 | 天天干天天做天天操 | 欧美另类亚洲 | 日本成人不卡 | 久久se精品一区二区国产 | 丁香午夜 | 亚洲精品视频网 | 欧美日本日韩 | 国产精品久久国产三级国电话系列 | 天天做天天操 | 亚洲国产精品第一区二区 | 四虎精品在线视频 | 欧美精品成人一区二区视频一 | 亚洲欧美国产另类视频 | 欧美成人久久 | 欧美日韩亚洲精品一区二区 | 欧美性生活一级 | 免费日韩在线视频 | 久99久精品免费视频热77 | 在线观看久草 | 久久精品视频亚洲 | 中文字幕一级毛片视频 | 国产成人综合网在线观看 | 色综合久久久久久中文网 | 麻豆国产原创最新在线视频 | 国内视频一区二区 | 天天色天天操综合网 | 天天综合天天添夜夜添狠狠添 | 97精品伊人| 久久综合99re88久久爱 | 伊人免费视频二 |