Python 2與Python 3版本和編碼的對比,python對比

來源:互聯網
上載者:User

Python 2與Python 3版本和編碼的對比,python對比

一、版本對比

首先要說的是,Python的版本,目前主要分為兩大類:

Python 2.x的版本的,被稱為Python2:是目前用的最廣泛的,比如Python 2.7.3。

Python 3.x的版本的,被稱為Python3:是最新的版本的,比如Python 3.1。長遠來看,也算是以後的趨勢。

【Python2和Python3之間的區別】

1.從Python2到Python3,很多基本的函數介面變了,甚至是,有些庫或函數被去掉了,改名了

     Python2和Python3,在很多基本的,最常用的函數方面,介面都變了,最典型的就要數大家最常用的print函數了。

2.第三方庫的支援方面,目前來說,還是Python2支援的最好,Python3支援的不太夠

     Python強大的原因之一是第三方的庫很多,功能很強大。

     而目前很多Python的第三方的庫,很多隻提供Python2的。

     或者是即使提供了Python3的,但是也不一定很成熟。

二、編碼對比

在 Python 中,不論是 Python2 還是 Python3 中,總體上說,字元都只有兩大類:

  1. 通用的 Unicode 字元;
  2. (unicode 被編碼後的)某種編碼類別型的字元,比如 UTF-8,GBK 等類型的字元。

Python2 中字元的類型:

  • str: 已經編碼後的位元組序列
  • unicode: 編碼前的文本字元

Python3 中字元的類型:

  • str: 編碼過的 unicode 文本字元
  • bytes: 編碼前的位元組序列

我們可以認為字串有兩種狀態,即文本狀態和位元組(二進位)狀態。Python2 和 Python3 中的兩種字元類型都分別對應這兩種狀態,然後相互之間進行編解碼轉化。編碼就是將字串轉換成位元組碼,涉及到字串的內部表示;解碼就是將位元組碼轉換為字串,將位元位顯示成字元。

在 Python2 中,str 和 unicode 都有 encode 和 decode 方法。但是不建議對 str 使用 encode,對 unicode 使用 decode, 這是 Python2 設計上的缺陷。Python3 則進行了最佳化,str 只有一個 encode 方法將字串轉化為一個位元組碼,而且 bytes 也只有一個 decode 方法將位元組碼轉化為一個文本字串。

Python2 的 str 和 unicode 都是 basestring 的子類,所以兩者可以直接進行拼接操作。而 Python3 中的 bytes 和 str 是兩個獨立的類型,兩者不能進行拼接。

Python2 中,普通的,用引號括起來的字元,就是 str;此時字串的編碼類別型,對應著你的 Python 檔案本身儲存為何種編碼有關,最常見的 Windows 平台中,預設用的是 GBK。Python3 中,被單引號或雙引號括起來的字串,就已經是 Unicode 類型的 str 了。

對於 str 為何種編碼,有一些前提:

  1. Python 檔案開始已經聲明對應的編碼
  2. Python 檔案本身的確是使用該編碼儲存的
  3. 兩者的編碼類別型要一樣(比如都是 UTF-8 或者都是 GBK 等)

這樣 Python 解析器才能正確的把文本解析為對應編碼的 str。

總體來說,在 Python3 中,字元編碼問題得到了極大的最佳化,不再像 Python2 那麼頭疼。在 Python3 中,文本總是 Unicode, 由 str 類型進行表示,位元據使用 bytes 進行表示,不會將 str 與 bytes 偷偷的混在一起,使得兩者的區別更加明顯。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或使用python能帶來一定的協助,如果有疑問大家可以留言交流,謝謝大家對幫客之家的支援。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.