python 2 和python 3 中的編碼對比

2022-01-24 10:05:35 字數 919 閱讀 1359

在 python 中,不論是 python2 還是 python3 中,總體上說,字元都只有兩大類:

python2 中字元的型別:

python3 中字元的型別:

我們可以認為字串有兩種狀態,即文字狀態和位元組(二進位制)狀態。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 解析器才能正確的把文字解析為對應編碼的 str。

總體來說,在 python3 中,字元編碼問題得到了極大的優化,不再像 python2 那麼頭疼。在 python3 中,文字總是 unicode, 由 str 型別進行表示,二進位制資料使用 bytes 進行表示,不會將 str 與 bytes 偷偷的混在一起,使得兩者的區別更加明顯。

python3和python2的區別

1.效能 py3.0執行 pystone benchmark的速度比py2.5慢30 guido認為py3.0有極大的優化空間,在字串和整形操作上可 以取得很好的優化結果。py3.1效能比py2.5慢15 還有很大的提公升空間。2.編碼 py3.x原始碼檔案預設使用utf 8編碼,這就使得以下 是合...

Python2和Python3的比較

python2 python3 print fish print fish unicode 是單獨的 unicode utf 8 字串 b b china byte 和 bytearrays type b type bytes s b.decode 轉化成 string 型別b1 s encode ...

python3和python2的區別

這個星期開始學習python了,因為看的書都是基於python2.x,而且我安裝的是python3.1,所以書上寫的地方好多都不適用於python3.1,特意在google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查詢方便,也可以分享給想學習python的frie...