Python2到Python3的這6個變化,你都知道嗎?

Python2到Python3的這6個變化,你都知道嗎?

在 Python 的圈子裡,關於 Python 2 和 Python 3 的爭論持續不斷,總是一波未平一波又起。雖然在很多的項目中,在一定程度上都實現了對 Python 2 和 Python 3 的兼容,但是兩者的問題依舊是無法避免,仍然是編程界必須關注的要點之一。

當前的形勢

以下是 Python 核心團隊對不同 Python 版本的時間規劃。從表中可以看出,他們計劃將在 2020 年停止支持 Python 2,全力投入到Python 3 當中。

Python2到Python3的這6個變化,你都知道嗎?

當前仍在支持的 Python 版本

Python2到Python3的這6個變化,你都知道嗎?

已停止支持的 Python 版本

在2017年年底,一系列項目開發團隊發佈了即將放棄支持 Python 2.x 的聲明,它們也將計劃在2020年停止支持 Python 2。具體如下:

Python2到Python3的這6個變化,你都知道嗎?

即將放棄支持 Python 2.x 的工具

是不是看到了很多自己熟悉的工具?在不久的將來,你必須得要在這些工具當中使用 Python 3,真正放棄使用 Python 2了。不過還有2年多的時間,還來的及。有興趣的人,還可以投入到各種工具從 Python 2 到 Python 3 在代碼修改工作當中。

主要的變化

Python 3 的變化並不是特別多,但也不是一兩句話就能解釋清楚的。下面會簡單說明一些主要的變化,未來會再寫一篇文章詳細地解釋這些變化。

1. print 變成了 print()

Python 2 中的 print 只是一條語句,除了輸出後面所跟的內容,不能做其他的附加操作。當 print() 用作函數時,可以添加各種關鍵字參數來改進標準行為,實現更多的附加操作。

2. 默認情況下字符串會轉換為 Unicode 編碼

Python 開發者常常面對的一個“陷阱”就是字符串的編碼問題。當處理 Unicode 和通常的 ASCII 字符串時,無數的 Python 開發人員遇到這種問題已經不止一兩天了。

在 Python 3.x 中這種類型的問題將不再經常發生。字符串默認為 Unicode 編碼,用戶將不再需要使用 Unicode 和 ASCII/非 Unicode 字符串這些術語。Python 3 使用了文本(text)和(二進制)數據的概念,而非 Unicode 字符串和 8 位字符串。所有的文本都是 Unicode 編碼,編碼的 Unicode 表示成二進制數據。用來保存文本的類型是 str,而用來保存數據的類型是 bytes。因為現在默認的是 Unicode 編碼,所以前導 u 或 U 已經棄用。同樣地,新的字節對象需要在字節前面提供一個 b 或 B 前置。

3. 增加了一個單類(single class)類型

這是一種新型的類,能夠實現繼承數據類型以及修改它們。這是一種統一的類型(Type)和類(Class)

4. 更新了異常的語法

在捕獲異常中,新增 as 關鍵字作為異常類型和對象變量的間隔,替代了逗號,確保開發者不會因為原始語法中的逗號而混淆。

過去的形式:

Python2到Python3的這6個變化,你都知道嗎?

Python 2.6 以後版本的形式:

Python2到Python3的這6個變化,你都知道嗎?

在拋出異常中,處理的語句實際上變成創建一種異常的一個實例,這是 Python 3.x 中唯一支持的一種語法。

Python2到Python3的這6個變化,你都知道嗎?

5. 更新了整數

(1)單整數類型

實現了 int 和 long 的統一。當使用 int 超過本地整數大小時,不會再導致 OverflowError 異常。long類型在 Python 3.0 中已經消失,並且後綴 L 也已經棄用。

(2)除法的改變

任意給定兩個操作數,“/”總是返回一個浮點數,“//”永遠表示向下除法。

(3)二進制和八進制的表示

十六進制表示保持不變,依然使用前導 0x 或 0X。八進制從使用單個 0 為前導,更改為 0o 。二進制以 0b 為前綴。

6. 迭代無處不在

使用迭代器比在內存中維護整個列表更有效,特別是針對問題對象的目標動作是迭代時,從而避免浪費內存。例如,函數 map()filter()range()zip(),加上字典方法 keys()items() values(),其中每一個都返回一些種類的迭代器。如果想查看數據,那麼這個語法可以更方便,而在查看資源消耗時它更好用。

今天的分享就到這裡啦,喜歡這篇文章的話記得轉發+評論哦!

另外送上這篇文章的福利,私信“01”即可獲得Python視頻資料哦!


分享到:


相關文章: