Python 3.12穩定版現在釋出,改進許多既有功能,包括f-string解析、緩衝區協定等,同時也改進了錯誤訊息,使開發者能夠更清楚錯誤發生原因,並且獲得實用建議,開發團隊也進行了大大小小的效能改進,Python整體效能提高約5%。

在Python 3.12中f-string解析更加靈活,許多之前不允許的操作,在這個版本都進一步放寬。在3.11中f-string的表示式如果重用外部f-string的相同引號,會導致語法錯誤,但這個寫法在3.12被允許。而且在前一版本,f-string表示式本身即便可以跨多行,但是仍必須要在單行內定義,在3.12開發者則可以使用多行表示式。之前f-string不能包含任何反斜線符號,在新版本中也被允許使用,因此f-string也可以包含跳脫序列(Escape Sequences)。

Python開發者在新版中可以更方便地使用緩衝區協定(Buffer Protocol),緩衝區協定是一個低階介面,允許物件暴露其內部資料給其他物件,如此便可省去複製的過程,因此在處理大量資料,像是陣列或是圖像時,可以提高效能並節省記憶體。

在之前,緩衝區協定主要在Python的C API中被使用,對純Python的開發者並不友善,Python 3.12則引入新方法和抽象類別來解決這個問題,使開發者可以更直接地在Python程式碼中操作緩衝區協定,不再需要透過C或是其他低階方法,整體而言改進了Python程式碼的可存取性。

Python 3.12版本的錯誤訊息也獲得不少改進,不只更加清晰也更具指導性,讓開發者可容易辨識並修正錯誤。當開發者忘記匯入標準函式庫模組但仍試圖使用時,系統現在會發出提醒。同樣的,當開發者錯誤使用import語法時,系統會提供正確的使用建議,如果開發者試圖使用不存在的模組時,系統會根據模組中可用的名稱給出建議。另外,在類別方法中使用未正確參照的實例屬性時,錯誤訊息現在會指向正確物件本身的屬性名稱。

Python還進行了多項效能提升更新,Unicode物件經過瘦身,透過移除部分成員縮小記憶體占用空間,使其更為輕巧,而且Python還會在建置過程中,使用BOLT二進位最佳化工具,使效能提高1%到5%。tokenize模組內的函式,因為f-string解析的改進,使速度提高達64%,另外,因為新的LOAD_SUPER_ATTR指令,開發者在呼叫super() 方法和載入屬性也會感覺到速度提升。

熱門新聞

Advertisement