首頁  >  文章  >  後端開發  >  Python 2與Python 3版本和編碼的對比

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

高洛峰
高洛峰原創
2017-02-17 11:52:571140瀏覽

一、版本對比

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

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

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

【Python2和Python3之間的區別】

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

 的,最常用的函數方面,介面都變了,最典型的就要數大家最常用的print函數了。

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

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

     而目前許多Python的第三方的函式庫,許多只提供Python2的。

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

某種編碼類型的字符,例如UTF-8,GBK 等類型的字符。

    Python2 中字符的類型:
  1. str: 已經編碼後的字節序列

  2. unicode: 編碼前的文字類型

    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 為何種編碼,有一些前提:

  • Python 文件開始已經聲明對應的編碼

Python 文件本身的確是使用該編碼保存的

兩者的編碼類型要一樣(例如都是UTF-8 或都是GBK 等)

    這樣Python 解析器才能正確的把文字解析為對應編碼的str。
  1. 整體來說,在 Python3 中,字元編碼問題得到了極大的最佳化,不再像 Python2 那麼頭痛。在 Python3 中,文字總是 Unicode, 由 str 類型進行表示,二進位資料使用 bytes 進行表示,不會將 str 與 bytes 偷偷的混在一起,使得兩者的區別更加明顯。

  2. 總結

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

  3. 更多Python 2與Python 3版本和編碼的對比相關文章請關注PHP中文網!
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn