Python 3.8.0來了!

2021-01-08 騰訊網

新智元報導

來源:.python.org

編輯:肖琴

【新智元導讀】Python 官網靜悄悄地發布了一則大消息:正式發布 Python 3.8.0!新版本較3.7版增加了一大波新功能和優化,來新智元 AI 朋友圈與 AI 大咖一起參與討論吧~

今天,Python 官網宣布,正式發布 Python 3.8.0

Python 3.8.0 現已推出。

代表 Python 開發社區和 Python 3.8 發布團隊,我們很高興地宣布 Python 3.8.0 現在已經可以使用。

Python 3.8.0 是 Python 語言的最新正式版,包含許多新功能和優化。

Python 的大多數第三方庫也應該很快就會支持 3.8.0 軟體包。

有關 3.8 版本功能的更多信息,請參閱 「Python 3.8 新特性」 文檔。所有更改的詳細信息都可以在更改日誌中找到。

從 2019 年 12 月開始,3.8 系列的維護版本將定期每兩個月發布一次。

我們希望您喜歡 Python 3.8!

感謝所有幫助 Python 開發和這些發布的志願者!歡迎通過志願或組織捐贈支持 Python 軟體基金會的工作。

Python 3.8.0 重要新特性&優化

那麼,這次新發布的 Python 3.8.0 有哪些重要的改進呢?以下是是 Python 3.8 相比 3.7 的新增特性。

PEP 572,賦值表達式

PEP 570,僅限位置形參

PEP 587,Python 初始化配置(改進的嵌入)

PEP 590,Vectorcall:用於 CPython 的快速調用協議

PEP 578, Python Runtime Audit Hooks

PEP 574,具有外部數據緩衝區的 pickle 協議 5

與打字相關:PEP 591(最終限定詞),PEP 586(文學類型)和 PEP 589(TypedDict)

用於已編譯字節碼文件的並行文件系統緩存

調試構建使用與發布構建相同的 ABI

f - 字符串支持 = 用於自動記錄表達式和調試文檔

在 Windows 上,默認 asyncio 事件循環現在是 ProactorEventLoop

在 macOS 上,spawn 啟動方法默認使用 multiprocessing

multiprocessing 現在可以使用共享內存段來避免進程之間的酸洗成本

typed_ast 被合併回 CPython

LOAD_GLOBAL 速度加快了 40%

pickle 現在默認使用協議 4,提高了性能

接下來,我們重點來看幾個(來自Python 3.8 文檔)。

賦值表達式

Python 3.8.0 有一個新的語法:=,它將值賦給一個更大的表達式中的變量。它被親切地稱為「海象運算符」(walrus operator),因為它長得像海象的眼睛和象牙。

海象

這個 「海象運算符」 在某些時候可以讓你的代碼更整潔,比如:

在這個示例中,賦值表達式可以避免調用 len () 兩次:

類似的益處還可出現在正則表達式匹配中需要使用兩次匹配對象的情況中,一次檢測用於匹配是否發生,另一次用於提取子分組:

此運算符也適用於配合 while 循環計算一個值來檢測循環是否終止,而同一個值又在循環體中再次被使用的情況:

另一個值得介紹的用例出現於列表推導式中,在篩選條件中計算一個值,而同一個值又在表達式中需要被使用:

請儘量將海象運算符的使用限制在清晰的場合中,以降低複雜性並提升可讀性。

了解詳情:https://www.python.org/dev/peps/pep-0572

(由 Morehouse 在 bpo-35224 中貢獻。)

僅限位置形參

新增了一個函數形參語法/用來指明某些函數形參必須使用僅限位置而非關鍵字參數的形式。這種標記語法與通過help ()所顯示的使用 Larry Hastings 的 Argument Clinic 工具標記的 C 函數相同。

在下面的例子中,形參 a 和 b 為僅限位置形參,c 或 d 可以是位置形參或關鍵字形參,而 e 或 f 要求為關鍵字形參:

以下均為合法的調用:

但是,以下均為不合法的調用:

這種標記形式的一個用例是它允許純 Python 函數完整模擬現有的用 C 代碼編寫的函數的行為。例如,內置的 pow () 函數不接受關鍵字參數:

另一個用例是在不需要形參名稱時排除關鍵字參數。例如,內置的 len () 函數的籤名為 len (obj, /)。這可以排除如下這種笨拙的調用形式:

另一個益處是將形參標記為僅限位置形參將允許在未來修改形參名而不會破壞客戶的代碼。例如,在 statistics 模塊中,形參名 dist 在未來可能被修改。這使得以下函數描述成為可能:

由於在/左側的形參不會被公開為可用關鍵字,其他形參名仍可在**kwargs中使用:

這極大地簡化了需要接受任意關鍵字參數的函數和方法的實現。例如,下面是 collections 模塊中的代碼摘錄:

了解詳情:https://www.python.org/dev/peps/pep-0570

(由 Pablo Galindo 在 bpo-36540 中貢獻。)

用於已編譯字節碼文件的並行文件系統緩存

新增的 PYTHONPYCACHEPREFIX 設置 (也可使用 -Xpycache_prefix) 可將隱式的字節碼緩存配置為使用單獨的並行文件系統樹,而不是默認的每個原始碼目錄下的__pycache__子目錄。

緩存的位置會在 sys.pycache_prefix 中報告 (None 表示默認位置即__pycache__子目錄)。

(由 Carl Meyer 在 bpo-33499 中貢獻。)

調試構建使用與發布構建相同的 ABI

發布構建和調試構建現在都是 ABI 兼容的:定義Py_DEBUG宏不會再啟用Py_TRACE_REFS宏,它引入了唯一的 ABI 不兼容性。Py_TRACE_REFS宏添加了 sys.getobjects () 函數和 PYTHONDUMPREFS 環境變量,它可以使用新的./configure --with-trace-refs構建選項來設置。(由 Victor Stinner 在 bpo-36465 中貢獻。)

f - 字符串支持 = 用於自動記錄表達式和調試文檔

增加=說明符用於 f-string。形式為f''的 f - 字符串將擴展表示為表達式文本,加一個等於號,再加表達式的求值結果。例如:

通常的 f - 字符串格式說明符 允許更細緻地控制所要顯示的表達式結果:

=說明符將輸出整個表達式,以便詳細演示計算過程:

(由 Eric V. Smith 和 Larry Hastings 在 bpo-36817 中貢獻。)

PEP 587: Python 初始化配置

PEP 587 增加了一個新的 C API 用來配置 Python 初始化,提供對整個配置過程的更細緻控制以及更好的錯誤報告。

Vectorcall: 用於 CPython 的快速調用協議

添加 "vectorcall" 協議到 Python/C API。它的目標是對已被應用於許多類的現有優化進行正式化。任何實現可調用對象的擴展類型均可使用此協議。

此特性目前為暫定狀態,計劃在 Python 3.9 將其完全公開。

了解詳情:https://www.python.org/dev/peps/pep-0590

(由 Jeroen Demeyer 和 Mark Shannon 在 bpo-36974 中貢獻。)

具有外部數據緩衝區的 pickle 協議 5

當使用 pickle 在 Python 進程間傳輸大量數據以充分發揮多核或多機處理的優勢時,非常重要一點是通過減少內存拷貝來優化傳輸效率,並可能應用一些定製技巧例如針對特定數據的壓縮。

pickle 協議 5 引入了對於外部緩衝區的支持,這樣 PEP 3118 兼容的數據可以與主 pickle 流分開進行傳輸,這是由通信層來確定的。

了解詳情:https://www.python.org/dev/peps/pep-0574

(由 Antoine Pitrou 在 bpo-36785 中貢獻。)

更多詳細特性,請查閱Python 3.8.0文檔:

https://docs.python.org/zh-cn/3.8/whatsnew/3.8.html

連續三年奪冠,Python為什麼這麼受歡迎?

Python 已經成為最受歡迎的程式語言。

在2019年度 IEEE Spectrum 程式語言排行榜中,Python 不負眾望,穩居榜首,而且連續三年奪冠。

IEEE Spectrum 2019 十大程式語言排行如下

Python 的流行在很大程度上是受了大量可用專用庫的驅動,特別是在人工智慧領域中。事實上,Keras 庫對深度學習開發人員影響很大。但深度學習並不是 Python 產生巨大的影響的唯一領域,微處理器計算能力的顯著提高意味著嵌入式版本的 Python:如 CircuitPython 和 MicroPython,正越來越受製造商的歡迎。

而 Python 為何能連續三年奪冠?

Python 的高速發展主要原因是軟體工程的蓬勃發展,它吸引了許多零基礎的初學者。Java 的編程方法對於初學者來說太冗長了,單單想要完全理解和運行在 Java 中的 「hello world」 這樣的簡單程序,你就需要去了解類、靜態方法和包。在 C 語言中,這要簡單一些,但是在內存管理上還是會出現一些問題。但在 Python 這裡,就只是一行代碼的事。所以,Python 越來越流行,被越來越多的開發者使用。

對初學者友好,是 Python 用戶快速增加的原因之一。如果你還不了解Python,那麼最近微軟推出的一套免費入門教程是很好的選擇。

視頻地址:

https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6

這套視頻教程名為 Python for Beginners,由微軟高級項目經理 Christopher Harrison、以及微軟 AI Gaming 的商業開發經理 Susan Ibach 共同講解,在課程中加入了他們對 Python 的見解,一共有 44 個視頻。

這套課程最大的特定是輕鬆簡潔,一上線就很受歡迎,5 天視頻播放量超 25 萬,更一度登上 GitHub 趨勢榜第一名。

我應該升級到 Python 3.8 嗎?

很簡單,如果你想嘗試前面介紹的 Python 3.8 的任何新功能,那麼就應該升級到 Python 3.8。像 pyenv 和 Anaconda 這樣的工具可以很容易地並排安裝多個版本的 Python。或者,你也可以運行官方的 Python 3.8 Docker 容器。嘗試使用一下 Python 3.8,肯定會眼前一亮~

不過,是否應該將生產環境升級到 Python 3.8 呢?這需要考慮你的項目是否依賴 Python 3.8 的新功能。升級環境以運行 Python 3.8 是非常安全的,而且也能利用新版本中的優化。不過,如果你想保守一點,可以堅持到第一個維護版本(Python 3.8.1)發布時再升級。

如何評價 Python 3.8?歡迎來新智元 AI 朋友圈與大咖一起討論~

參考連結:

https://docs.python.org/zh-cn/3.8/whatsnew/3.8.html

相關焦點

  • python教程第8課:python基礎之Tuple元祖
    Tuple和list相比的話操作效率更高Tuple裡面的元素不可改變,代碼更加安全3、 在什麼情況下使用呢?』))# 獲取索引為0的元素print ("tup[0] =",tup[0])#輸出結果tup[0] = 1# 1: 從索引為1到最後一個元素
  • Python
    最近,在數據挖掘課,要交課設了,打算做一個通過機器學習進行新聞分類,首先要有大量的文本(新聞),去做訓練,並通過爬蟲爬取大量的新聞一,思路如下:0.首先確定獲取數據的網站1.通過BeautifulSoup來切取連結2.
  • python-stdnum 0.9 發布
    python-stdnum 0.9 發布,此版本包括了一些新的數值格式(Brin number, Postcode, ATIN, EIN, ITIN, PTIN 和 TIN);對更新 stdnum
  • Python2 已終結,入手Python 3,你需要這30個技巧
    例如,你可以用 Out[3] 來調取第三條命令的輸出。你可以用下面這條命令安裝 IPython:pip3installipython4. 列表表達式有了列表表達式,你就不再需要用 for loop 來生成一個 list 了。
  • python入門教程06-01(python語法入門之字符編碼)
    文本編輯器會將剛剛讀入內存中的內容顯示到屏幕上2.3 python解釋器執行文件的流程以python test.py為例,執行流程如下#階段1、啟動python解釋器,此時就相當於啟動了一個文本編輯器#階段2、python解釋器相當於文本編輯器,從硬碟上將test.py的內容讀入到內存中
  • 「python學習手冊-筆記」003.數值類型
    **二進位:**0b或者0B開頭表示 **八進位:**0o或者0O開頭表示(注意第二個字符是字母o) **十六進位:**0x或者0X開頭表示 可以使用內置函數bin(I),oct(I),hex(I)來進行進位轉換.
  • 如何安裝python3
    如何安裝python3首先找到python的官網: https://www.python.org/然後點擊Download然後選擇對應的版本,這裡選擇的是windows>跳轉到對應的界面以後,選擇python3.5版本,64位下載即可下載完成以後有一個.exe的可執行文件雙擊這個可執行文件,然後進行選擇安裝。
  • python字符的編碼與解碼
    8個二進位位組成1個字節(Byte),1024位元組(Byte)也就是1KB,1024KB是1M,這就是我們平常說的文件大小的單位(M),比如這個圖片大小5M。既然計算機是通過二進位的數字來識別不同字符的,那不同的字符該用多少個1和0,又該以什麼樣的順序來排列呢?
  • python:控制流程 - for迭代循環
    元組的遍歷tu = (2, 3, 4, 7, 8)for i in tu:print(i)輸出結果:23478實例3.(5))) print(list(range(1, 5))) print(list(range(1, 5, 2))) 輸出結果:[0, 1, 2, 3, 4][1, 2, 3, 4]
  • python爬蟲系列教程,用python爬取全國範圍內的KFC店地址
    下面羽憶教程教你會python爬取全國範圍內的KFC店地址,這是一篇python爬蟲系列的教程,簡單又能讓人填飽肚子。python爬蟲介紹python發展至今,python爬蟲已經成為了一種職業,因為其可以幫助企業快速得到網絡上的最新信息,但是為什麼很多寫python爬蟲的程式設計師會面臨牢獄之災呢?
  • python學習路線分享
    1.2 Python MOOC練習4 1.3 python中的隨機函數random的用法示例 1.4 Python文本詞頻統計的編碼問題-MOOC嵩天 1.5 Python中的複數和誤區 1.6 Python計算圓周率的兩種方法
  • python獲取ES中的數據
    在索引中添加數據命令:PUT test/_doc/2{"name": "xiaohong","sex":"male","age": 18}3.查看索引中的數據命令:GET test/_searchES中有了數據之後,我們來通過python獲取ES中的值。這裡用兩種方式分別獲取ES中的值。第一種方式使用python中的Elasticsearch工具包;第二種方式使用requests工具包,即通過請求url的方式才kibana獲取ES中的值。
  • 3分鐘了解python!新手必看
    一、Python是什麼語言,python是什麼類型的語言?Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。Python由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年。
  • 好程式設計師Python培訓分享Python如何調用RPC接口
    2、grpc的python protobuf相關的編譯工具 pip install grpcio-tools 3、protobuf相關python依賴庫 pip install protobuf 4、一些常見原型的生成python類的集合:
  • Python突破12306最後一道防線,實現自動搶票(附源碼)
    第 %s 次" % count# sleep(0.8)try:for i in self.driver.find_by_text(u"預訂"):i.click()sleep(1)我一直說python是非常優美的語言,那到底如何個美呢,其中有一個特性就是簡潔.很多果粉為啥特別喜歡蘋果手機和蘋果電腦,一方面確實做的漂亮,另外一個就是簡潔。你想蘋果手機開機關機,刪軟體都是一個步驟,而我們用win,關機至少3-5步,刪軟體更不要說了,非常麻煩.
  • python繪圖第二彈來襲,教你會py畫櫻花樹,女朋友都驚呆了
    python可以用來繪畫這個都是借用python繪圖Turtle庫,其是目前流行的繪製圖像的函數庫。而這期羽憶教程為您介紹如何用python畫櫻花樹,不僅浪漫,而且簡單方便。python畫櫻花樹python畫櫻花樹如何用pythong畫櫻花樹呢
  • 介紹一下什麼是python(瘋狂Python)
    查看python版本以Windows為例,其他系統查看的python方法不做贅述,可自行百度一下打開cmd命令行(快捷鍵:Win + R鍵 同時按)輸入Python -V,就能返回電腦中安裝的python
  • python入門教程06-02(python語法入門之文件處理)
    上一章講解了python的字符編碼,了解了python的字符代碼結構之後就需要了解一下python這門語言是如何處理你給的命令,怎麼去處理文件的,下面我們來了解一二。一 引入應用程式運行過程中產生的數據最先都是存放於內存中的,若想永久保存下來,必須要保存於硬碟中。
  • python實現釘釘自動打卡
    說下思路吧用python調用adb命令通過x,y點位來操作手機,在寫個定時器就好了,簡單吧。print(os.system('adb shell input tap 647 1685 ')) # 點擊釘釘應用位置 time.sleep(3) print(os.system('adb shell input tap 528 2190 ')) # 點擊釘釘菜單 time.sleep(3)
  • Icarus 1.3.0 發布,基於 Python+Vue 的現代社區系統
    簡介一個由 Python3.6 與 Vue.js 全家桶構建的現代社區系統。